我对Perl几乎是文盲,我需要在有限的时间内调试一个巨大的脚本。我只需要对下面的口头解释。
if (exists $Rows{bypassFile} && $Rows{bypassFile} =~ /\w/).
$Rows
是一个数组变量,bypassFile被初始化为
'bypassFile' => ''
我无法理解$Rows{bypassFile} =~ /\w/
。
我在互联网上发现的是:=~
是一个匹配'运营商。 \w
是表示单个字母的正则表达式。
答案 0 :(得分:5)
%Rows
是一个哈希表(关联数组,字典)。 $Rows
是一个不相关的标量变量。
如果与键bypassFile
关联的值包含“单词字符”,即字母或数字,则匹配返回true。 exists测试是为了防止有关匹配中未初始化值的警告。
比照。一个例子:
#!/usr/bin/perl
use warnings;
use strict;
my %Rows;
sub show_result {
if (exists $Rows{bypassFile} && $Rows{bypassFile} =~ /\w/) {
print "Yes\n";
} else {
print "No\n";
}
}
show_result();
$Rows{bypassFile} = '';
show_result();
$Rows{bypassFile} = ' ,';
show_result();
$Rows{bypassFile} = 'a12';
show_result();
答案 1 :(得分:1)
实际上,ListView
是一个哈希,%Rows
是此哈希中的一个条目。如果$Rows{bypassFile}
哈希中存在if
密钥,则bypassFile
测试,然后测试该密钥的值是否包含任何"字符"。