Я пишу небольшую программу perl, где я проверяю шаблон #start и #end. Повестка дня - создать отдельный файл с линиями между шаблонами начала и конца. Это я могу сделать с ниже сценария.Замените последнюю строку, записанную в файл descritor
#!/usr/bin/perl
open(INFILE,"<","testcases") || die "Can't open file: $!";
my $binary;
my $tccounter=1;
while(<INFILE>)
{
if(/^#start/i)
{
open(OUTFILE,">",$tccounter."_case.sh") || die "Can't open file: $!";
print "start of the script\n";
next;
}
elsif(/^#end/i)
{
################################
# Want to replace the previously
# written line here with some
# addtional customized lines
################################
close(OUTFILE);
$tccounter++;
print "End of the script\n";
print "last line for this testcase is \n $binary\n";
next;
}
else
{
$binary=$_ unless(/^\s*$/);
print OUTFILE $_;
}
}
Но то, что я дополнительно нужно это, это определить последнюю строку, которая записывается в файл, а затем заменить эту дополнительную строку с некоторыми пользовательскими данными. Например, здесь, в моем случае, выполняется последняя строка для всех файлов. Я хочу заменить строку «выполнить» во всех выходных файлах. В текущем выходе файлы последней строки, как показано ниже:
execute
ожидается из файлов последняя строка должна быть
preline
execute
postline
входного файла (testcases):
#start
line1
line 2
execute
#end
#start
line3
line 4
execute
#end
#start
line5
line 6
execute
#end
#start
line7
line 8
execute
#end
* Важно * использовать '' строгое ''и' использовать предупреждения 'all'' в верхней части каждой программы Perl, которую вы пишете. Нет смысла указывать переменные с 'my' без' use strict' на месте. – Borodin