所以我有一个数据文件,其中包含我用于测试目的的几行。数据文件包含:
typedef enum A
{
enum A = 0;
enum B = 1;
}
A;
typedef enum B
{
enum A = 1;
enum B = 2;
}
B;
我的代码由以下内容组成:
open(DATA, "<file.txt") or die "Couldn't open file file.txt, $!";
while(<DATA>){
print if /^(.*)(enum)(.*)$/;
}
我想比较每个typedef中A和A的值,并打印一个表明编译错误的错误。如何将这些正则表达式搜索结果存储为变量?
由于
答案 0 :(得分:0)
只需将匹配返回的值存储在列表上下文中(有关详细信息,请参阅perlop):
保留声明的变量名称的哈希值,如果再次出现已声明的名称,则报告错误:
my %declared;
while (<DATA>) {
if (my ($name) = /\b enum \s+ (\w+)/x) {
die "$name re-declared" if $declared{$name};
$declared{$name} = 1;
}
}