... a problem with Windows files used under Unix ...
If this is certain to be the situation, I think I would take the approach of local-ly changing $/ (see perlvar) to "\x0d\x0a" to control both the reading of Windoze-ish lines from a filehandle and the behavior of chomp in removing their line-enders. Something like:
open my $fh ... or die ...;
...
{
local $/ = "\x0d\x0a";
while (defined(my $line = <$fh>)) {
chomp $line;
do_something_with($line);
}
}
Both problems handled in one swell foop. (Of course, you have to be aware that the change to the global
$/ propagates 'into' the
do_something_with() call and into anything that function may call, but that's a post for another day.)