До того, как несколько минут назад я считал, что Perl - $
соответствует любому типу конца строки. К несчастью, мое предположение оказывается неправильным.
Следующий сценарий удаляет слово end только для $string3
.
use warnings;
use strict;
my $string1 = " match to the end" . chr(13);
my $string2 = " match to the end" . chr(13) . chr(10);
my $string3 = " match to the end" . chr(10);
$string1 =~ s/ end$//;
$string2 =~ s/ end$//;
$string3 =~ s/ end$//;
print "$string1\n";
print "$string2\n";
print "$string3\n";
Но я почти 75% уверен, что я видел случаи, когда $
совпавшие по крайней мере chr(13).chr(10)
.
Итак, что именно (и при каких обстоятельствах) соответствует совпадению атома $
? только
Возможно, вы читали файл в режиме ': crlf', поэтому файл содержал' chr (13) .chr (10) ', но строка, в которой вы были сопоставлены, имела только' chr (10) '. – cjm