我在我的代码中收到uninitialized value in string eq at *** line xxx
警告,如果该行确实有一个警告,这也很容易修复eq
。
但是 hashref 中的值存在正则表达式匹配。
if ($hashref->{parameters}->{type} =~ m/:/) {
在此之前的一些行我什至有这个:
$hashref->{parameters} = defined($hashref->{parameters}) ? $hashref->{parameters} : '';
$hashref->{parameters}->{type} = defined($hashref->{parameters}->{type}) ? $hashref->{parameters}->{type} : '';
所以这个值至少应该被初始化。
我问自己和你:为什么我仍然会收到值未初始化的警告,而且为什么它说eq
而不是pattern match
编辑:
parameters
subhash 包含通过 url 输入(post 和/或 get)给出的所有变量。该type
值是可能在 url 中的变量之一。type
该值是否在 url 中都没有关系,如果它包含一个值,我总是会收到uninitialized value in string eq
警告。即使我通过在错误行之前警告它来控制类型行的值。
2. 编辑:
正如@ikegami 所假设的,确实有一个elsif
导致警告的
整个 if - elsif 语句看起来像:
if ($hashref->{parameters}->{type} =~ m/:/) {
…
elsif ($hashref->{parameters}->{type} eq $somevalue) {
…
}
这$somevalue
就是未初始化的。