Этот вид поиска и замены может быть выполнен с помощью одной строки, например -
perl -i -pe 's/START.*STOP/replace_string/g' file_to_change
Чтобы узнать больше о том же, ознакомьтесь с этой нитью . Для обработки многострочного поиска используйте следующую команду -
perl -i -pe 'BEGIN{undef $/;} s/START.*STOP/replace_string/smg' file_to_change
Чтобы преобразовать следующий код из однострочной программы в perl-программу, взгляните на документацию perlrun .
Если вам действительно нужно преобразовать это в работающую программу, просто позвольте Perl позаботиться об открытии / закрытии файла.
#!/usr/bin/perl -pi
#multi-line in place substitute - subs.pl
use strict;
use warnings;
BEGIN {undef $/;}
s/START.*STOP/replace_string/smg;
Затем вы можете вызвать скрипт с именем файла в качестве первого аргумента
$perl subs.pl file_to_change
Если вам нужен более простой сценарий, в котором вы можете обрабатывать операции открытия / закрытия файлов (разве нам не нравятся все эти операторы 'die'), посмотрите на пример в perlrun под -i [расширение] переключатель.