[Pdx-pm] data munging: line-endings
Michael G Schwern
schwern at pobox.com
Tue Oct 14 21:08:11 CDT 2003
On Tue, Oct 14, 2003 at 11:48:09AM -0700, Thomas Keller wrote:
> On Tuesday, October 14, 2003, at 11:14 AM, Colin Kuskie wrote:
> >s/\s*$//;
> This doesn't help for the files I need to process. "$/" needs to be
> correct for correct line-by-line processing.
> I've been running them through the following filter, but it requires
> that I know ahead of time that the input file has DOS type
> line-endings. I guess that's not too onerous, but if we change the
> application generating these files, the line-endings may change. But I
> guess I'll see that immediately and be able to change the specification
> to the filter script.
Detection's pretty simple. Read in some text using read() and look for a
line ending.
open(FILE, $filename);
read(FILE, $text, 1024);
close FILE;
($ending) = $text =~ /[\r\n]{1,2}/
the only possible edge case is if there's a blank line which may result in
"\n\n" or "\r\r" in which case you just remove duplicates.
$ending =~ s/([\r\n])\1/$1/;
Now you can set $/ to $ending.
--
Michael G Schwern schwern at pobox.com http://www.pobox.com/~schwern/
If the women don't find you handsome, they should at least find you handy.
-- Red Green
More information about the Pdx-pm-list
mailing list