Как правило, вы можете использовать s,$/$,,r
регулярное выражение в качестве неразрушающего chomp. Он удаляет разделитель записей $/
с конца $_
или строку, предоставленную с использованием =~
, и возвращает результат без каких-либо изменений. Ваш пример будет выглядеть так:
if ( $str1 =~ s,$/$,,r eq $str2 =~ s,$/$,,r )
Более формально регулярное выражение должно быть s,\Q$/\E$,,r
, поэтому $/
не рассматривается как регулярное выражение. В режиме абзаца регулярное выражение должно быть s,\n*$,,r
. В режиме slurp или фиксированной записи регулярное выражение вообще не нужно (chomp ничего не делает).