When reading text of an unknown source that is likely to mix line endings (I find this in the html source of quite a few websites and in WinNT error messages), I tend to preprocess with "tr/\15\12/\n/s;"
and then carry on as if nothing was amiss. This does, however, depend _entirely_ on what you want to do with the rest of the data. To demonstrate its usefulness...
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
$Data::Dumper::Useqq = 1;
my $text;
my @e = ("\012", "\015", "\012\015", "\015\012");
$text .= "this is the line ". ($_ + 1) . $e[$_] for (0..$#e);
print "Before: ". Dumper $text;
$text =~ tr/\15\12/\n/s;
print "After: ". Dumper $text;
Good luck.