请帮助我理解字符串相等的一个奇怪问题。这是我正在谈论的代码:
my $test=undef;
foreach my $List (@o_descrL) {
if (!($test)) {
$test = defined($o_noreg)
? $descr_d eq $List
: $descr_d =~ /$List/i;
printf("$descr_d = $List\t\t==> $test\n");
}
}
不幸的是我没有写它,但我必须理解它。$List
始终是“SQL Server (C4)”,$descr_d
根据数组中的实际项目而变化。部分打印输出在这里:
Power = SQL Server (C4) ==>
SQL Server (C4) = SQL Server (C4) ==>
SNMP Service = SQL Server (C4) ==>
Network Connections = SQL Server (C4) ==>
如您所见,输出的第二行中的字符串是相等的。那为什么不是$test
真的?
编辑:我打印了更多输出,发现 when $descr_d eq $List
,它等于,但不是 if $descr_d =~ $List
。您能否解释一下实际放入$test
变量的内容?我不明白defined() ? :
这里是什么意思。
EDIT2:对于字符串“SQL Server Agent”,脚本工作得很好,只有在附加(C4)时才会出现问题。很奇怪,不是吗?