Perl is not C (I'm still learning this myself)! The string tokens of \n or \r [are not | do not seem to be] C style CHAR-type data per se! Please refer to Camel book PACK and UNPACK functions for do hex-based string manipulation (pg 757 3rd edition) for yet another way to handle the problem (if you like hex strings).
Example:
use strict;
my $cr=pack("H2",'0d');
my $lf=pack("H2",'0a');
my $lfcr=$lf.$cr;
my $ans=unpack("H4",$lfcr);
print '$lfcr=x',"$ans\n";
This will give your your linefeed/carrage return order, BUT depending how you're reading/manipulating your data (for example with <> and chop|chomp) you may need to clean the dangling single $lf's out yourself!
Update:
Thank you Tye, I stand humbly
corrected (and learned something I didn't know) about what
binmode does!