我正在寫一個小的perl程序,我正在檢查#start和#end的模式。議程是用開始和結束模式之間的線創建一個單獨的文件。這我可以用下面的腳本來做。替換寫入文件描述符的最後一行
#!/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」行。 在電流輸出文件的最後一行如下:
execute
有望走出文件的最後一行應該是
preline
execute
postline
輸入文件(測試用例):
#start
line1
line 2
execute
#end
#start
line3
line 4
execute
#end
#start
line5
line 6
execute
#end
#start
line7
line 8
execute
#end
*您必須*在您編寫的每個Perl程序的頂部使用strict和'use warnings'all''。使用'my'來聲明變量沒有'use strict'就沒有什麼意義了。 – Borodin