Hi Monks,
I'm working on linux and win32 machines. This routine parses mostly big LOG files, often from the *other* OS. The files contain ether \r\n or \n as EOL and may not be changed.
I have written a routine, which uses Tie::File in RO mode to get the lines. But this proggy dies if it ties an single-element-array which happens when getting newline text while running under win32.
Any suggestions?
# $/ = "\x0d\x0a" # this is default (OS = Win32) tie my @array, 'Tie::File', $file, mode => O_RDONLY, memory => 0 or di +e $!; # ReadOnly und *no MemBuffer* !! # $_ =~ s/\r?\n/\n/g for (@array); # doesn't work because $file will +be written $n_recs = @array; # how many records/lines are in the file? unless ($n_recs > 1) { untie @array; local $/ = "\x0a"; tie @array, 'Tie::File', $datei, mode => O_RDONLY, memory => 0 or d +ie $!; $n_recs = @array; print join ("~LF~", @array); # test to see... die "Sorry -- only one line!\n" unless $n_recs > 1; }
In reply to Problems with changing $/ and Tie::File in RO mode by Ooops
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |