perl中的条件语句

时间:2016-04-03 16:12:40

标签: perl

我对Perl几乎是文盲,我需要在有限的时间内调试一个巨大的脚本。我只需要对下面的口头解释。

if (exists $Rows{bypassFile} && $Rows{bypassFile} =~ /\w/).

$Rows是一个数组变量,bypassFile被初始化为 'bypassFile' => ''

我无法理解$Rows{bypassFile} =~ /\w/。 我在互联网上发现的是:=~是一个匹配'运营商。 \w是表示单个字母的正则表达式。

2 个答案:

答案 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测试,然后测试该密钥的值是否包含任何"字符"。