这段代码表达式的功能是什么?

时间:2016-11-30 09:10:09

标签: perl

我对正则表达式的功能感到困惑:

/\[\]$/

我尝试了一个简短的perl代码来理解它,但我仍然感到困惑。代码输出为Else

my $addr2 = {[{'firstname' => 'Nikhil', 'lastname' => 'Hegde'}, {'firstname' => 'Nikhil2', 'lastname' => 'Hegde2'}]};
if($addr2 =~ /\[\]$/) {
    print "If\n";
} 
else {
    print "Else\n";
}

我认为/\[\]$/会指出该值是否为数组,但似乎并非如此。然后我想,考虑到正则表达式中有$,值可能以数组结束。所以,我试着代替:

my $addr2 = {[{'firstname' => 'Nikhil', 'lastname' => 'Hegde'}, {'firstname' => 'Nikhil2', 'lastname' => 'Hegde2'}],[]};

但这也不起作用。代码输出仍为Else

任何人都可以帮助我理解/\[\]$/这个词吗?它有什么常规匹配?谢谢!

1 个答案:

答案 0 :(得分:7)

正则表达式检查字符串的匹配。在您的情况下,您尝试匹配哈希引用。这就是您的代码进入else块的原因。

现在,/\[\]$/。它匹配任何在其末尾具有文字[]字符串。例如,字符串my $str = "just an example []"将匹配此正则表达式。