subst.pl
来自「S60 SDL is a Simple DirectMedia Layer ad」· PL 代码 · 共 78 行
PL
78 行
use strict;
my $fname = $ARGV[0];
my @prepattern = split(/!!/, $ARGV[1]);
my @pattern = split(/!!/, $ARGV[2]);
my @subst = split(/!!/, $ARGV[3]);
foreach my $f (@prepattern)
{
#print "*$f\n";
}
open(IN, "$fname") or die "subst error $fname: $!\n";
my @lines;
my @backup;
my $matchcount = 0;
while(<IN>)
{
if($matchcount < @prepattern)
{
if(/$prepattern[$matchcount]/)
{
++$matchcount;
# print ">$_";
}
else
{
$matchcount = 0;
}
push(@lines, $_);
}
else
{
if($matchcount < @pattern + @prepattern)
{
my $patcount = $matchcount - @prepattern;
if(/$pattern[$patcount]/)
{
++$matchcount;
push(@backup, $_);
# print "--$_";
}
else
{
push(@lines, @backup);
push(@lines, $_);
@backup = ();
$matchcount = 0;
}
}
else
{
push(@lines, "/*S60 installer change - start*/\n");
foreach my $s (@subst)
{
push(@lines, "$s\n");
}
push(@lines, "/*S60 installer change - end*/\n");
@backup = ();
$matchcount = 0;
push(@lines, $_);
}
}
}
close(IN);
#exit;
open(OUT, ">$fname") or die "subst error $fname: $!\n";
print OUT @lines;
close(OUT);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?