【发布时间】:2016-01-08 10:23:15
【问题描述】:
我有一个数组@arr1,其中每个元素的格式为#define A B。
我有另一个文件,f1,内容如下:
#define,x,y
#define,p,q
等等。我需要检查每行的第二个值(y、q 等)是否与数组的任何元素中的第一个值匹配。示例:假设数组有一个元素#define abc 123,文件有一行#define,hij,abc。
当出现这样的匹配时,我需要将行 #define hij 123 添加到数组中。
while(<$fhDef>) #Reading the file
{
chomp;
$_ =~ tr/\r//d;
if(/#define,(\w+),(\w+)/)
{
my $newLabel = $1;
my $oldLabel = $2;
push @oldLabels, $oldLabel;
push @newLabels, $newLabel;
}
}
foreach my $x(@tempX) #Reading the array
{
chomp $x;
if($x =~ /#define\h{1}\w+\h*0x(\w+)\h*/)
{
my $addr = $1;
unless(grep { $x =~ /$_/ } @oldLabels)
{
next;
}
my $index = grep { $oldLabels[$_] eq $_ } 0..$#oldLabels;
my $new1 = $newLabels[$index];
my $headerLabel1 = $headerLabel."X_".$new1;
chomp $headerLabel1;
my $headerLine = "#define ".$headerLabel1."0x".$addr;
push @tempX, $headerLine;
}
}
这只是挂起。毫无疑问,我错过了眼前的一些东西,但是什么??
【问题讨论】: