Я не уверен, что следую вашему главному вопросу ... use warnings FATAL => 'utf8';
уже довольно короткий;Я не думаю, что вы найдете что-то более короткое.
Что касается подзапроса, .
в регулярном выражении будет по умолчанию соответствовать любому символу , кроме новой строки , поэтомуэта подстановка не удаляет последний символ новой строки:
$ perl -e '$foo = "foo bar baz\n"; $foo =~ s/bar.*$//; print $foo . "---\n";'
печатает
foo
---
Чтобы .
соответствовал символам новой строки, добавьте модификатор /s
в свое регулярное выражение:
perl -e '$foo = "foo bar baz\n"; $foo =~ s/bar.*$//s; print $foo . "---\n";'
печать
foo ---