Perl:比较正则表达式结果中的元素

时间:2016-10-03 16:56:09

标签: regex perl enums

所以我有一个数据文件,其中包含我用于测试目的的几行。数据文件包含:

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的值,并打印一个表明编译错误的错误。如何将这些正则表达式搜索结果存储为变量?

由于

1 个答案:

答案 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;
    }
}