2
我寫了下面這段代碼來嘗試在hashref中打印出值。 hashref來自DBI $statement->fetchrow_hashref()
方法。Perl未初始化的值錯誤
我想使用"string + $variable"
鍵來訪問元素的值。當我運行的代碼,我得到了以下錯誤:
Use of uninitialized value $value in string eq at main.pl line 19.
我以爲我嘗試使用它之前檢查的價值,所以我不知道怎麼回事,以趕上元素test3
是空的。
use strict;
use warnings;
# list is actually a hashref from DBI query
my $list = {"test1" => 'true=yes', "test2" => 'false=no', "test3" => ''};
my $value = "";
my_function($list);
sub my_function {
my ($list) = @_;
# Loop through values
foreach my $i(1..6) {
$value = $list->{"test$i"};
if(undef $value || $value eq "") {
next;
}
my ($k, $v) = split('=', $value);
print "$k = $v\n";
}
}
此外,我很好奇hashref和常規散列之間的區別。
替代選擇:'next if!defined($ value)|| !length($ value);'[在5.12之前]和'next如果!length($ value);'[5.12+] – ikegami
除非長度爲$ value,否則不會更簡單嗎? –