Roff1 Skrevet 28. juli 2010 Del Skrevet 28. juli 2010 Hei, Jeg har en unix fil på en windows pc som jeg må endre en HEX verdi i før jeg sender den videre. Problemet er at etter at perlscriptet mitt lagrer filen i DOS format. Koden min ser slik ut: opendir( DIRHANDLE, "Input" ) or die "Input Directory: $INPUTDIR do not exist.\n"; @InputFileName = readdir(DIRHANDLE); # For each file in input dir foreach $inputFile (@InputFileName) { # Skip directories if ( -d $inputFile ) { next } open(INPUTFILE,"<Input\\$inputFile") or die "Can't open $inputFile"; open(OUTPUTFILE,">Output\\$inputFile") or die "Can't create $inputFile"; # Loop throgh input file lines while (<INPUTFILE>) { $lineStr = $_; $lineStr =~ s/\x23/\x20/g; # HexEdit print OUTPUTFILE $lineStr; } close (INPUTFILE); close (OUTPUTFILE); } closedir(DIRHANDLE); exit; Som dere ser er det et enkelt script som kun skal endre en HEX verdi. Er det noen enkel på jeg kan lagre outputfilen i unix format? Eller går det an å konvertere filen til unix etterpå? Jeg er ganske ny med Perl så jeg takker for enkle svar;) Lenke til kommentar
kpolberg Skrevet 28. juli 2010 Del Skrevet 28. juli 2010 På mange linux maskiner finnes dos2unix. Lenke til kommentar
Roff1 Skrevet 28. juli 2010 Forfatter Del Skrevet 28. juli 2010 På mange linux maskiner finnes dos2unix. Ja, men jeg sitter på en windows maskin.. Lenke til kommentar
kpolberg Skrevet 28. juli 2010 Del Skrevet 28. juli 2010 http://www.dos2unix.org/ http://www.freedownloadscenter.com/Utilities/Misc__Utilities/DOS2UNIX_UNIX2DOS.html Lenke til kommentar
gizzlon Skrevet 28. juli 2010 Del Skrevet 28. juli 2010 Forskjellen er vel bare hva en "ny linje" er? Litt rart at den forandrer på det, ser jo ut som om du bare skriver ut det du får inn.. Lenke til kommentar
gizzlon Skrevet 28. juli 2010 Del Skrevet 28. juli 2010 kanskje det hjelper med: binmode(INPUTFILE); binmode(OUTPUTFILE); Sier at den ikke skal forandre newline, se: http://perldoc.perl.org/functions/binmode.html er vel også mulig å putte det inn i open() kallet Lenke til kommentar
Roff1 Skrevet 28. juli 2010 Forfatter Del Skrevet 28. juli 2010 kanskje det hjelper med: binmode(INPUTFILE); binmode(OUTPUTFILE); Sier at den ikke skal forandre newline, se: http://perldoc.perl.org/functions/binmode.html er vel også mulig å putte det inn i open() kallet Det var dette jeg var på jakt etter, fungerer udmerket Tusen hjertelig takk! Lenke til kommentar
asicman Skrevet 29. juli 2010 Del Skrevet 29. juli 2010 Finnes det ikke noe tilsvarende tr til Windows? Da kunne man skrive: echo "hello 123#abc" | tr "\043" "\040" hello 123 abc Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå