Я не понимаю, почему Ваш отрывок жемчуга записан этот путь. Вы могли записать regexp непосредственно в сценарии:
perl -e 'while (my $line = <STDIN>) {if ($line =~ /my regex/) {print $line}}'
который позволяет Вам использовать в своих интересах -n
опция (в качестве награды, Вы получаете надлежащее сообщение об ошибке в случае, если существует входная ошибка). Далее использование идиом жемчуга:
perl -ne 'print if /my regex/'
Sed имеет обратные ссылки, но расширенные regexes perl более мощны, существуют вещи, которые Вы не можете сделать с sed (sed, даже не имеет полного regexes: чередование \|
не стандартная функция, хотя много реализаций имеют ее).
Большая часть того, что можно сделать с традиционными инструментами, можно сделать легко в жемчуге. Например, если Вы хотите пропустить первые K-1 байты, можно записать
perl -ne 'BEGIN {read ARGV, "", 42-1}; …'
Если Вы хотите мобильность, много задач обработки текста может быть сделано в awk, но awk не имеет обратных ссылок вообще, так извлечение текста от строки может быть неуклюжим.