请帮助我理解一个字符串相等的奇怪问题。
以下是我所说的代码:
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
不是真的呢?编辑:我打印了更多的输出,并发现当
$descr_d eq $List
时,它是相等的,但不是$descr_d =~ $List
。请问您能解释一下实际上是什么在将$test
变量设置为什么吗?我不明白这里的defined() ? :
是什么意思。编辑2:对于字符串"SQL Server Agent",脚本运行得很好,只有在(C4)附加时才会出问题。相当奇怪,不是吗?
defined($o_noreg)
是否为真。 - TLP