note
adamk
My normal method for fixing this is to slurp the entire file in using something like.<br><br>
<code>
sub slurp {
my $file = shift or return undef;
local $/ = undef;
open( FOO, $file ) or return undef;
my $buffer = <FOO>;
close FOO;
return \$buffer;
}
</code>
(The return by refence is just there to avoid copying large files more times than is needed)<br><br>
Once it's in split it by hand using my handy dandy "works for any platform" regex.
<code>
my $content = slurp( $file ) or die "Failed to load file";
my @lines = split /(?:\015\012|\015|\012)/, $$content;
</code>
And we are done. The important bit here is (?:\015\012|\015|\012), which works everywhere. In fact, it will even work for "broken" files that somehow got multiple types of newlines in a single file. And note the order of the three newlines IS important.
<br><br>
Other things you can do with it is to "fix" newlines for the "current" platform using.
<code>
$$content =~ s/(?:\015\012|\015|\012)/\n/g;
</code>
280279
280279