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 + -
显示快捷键?