当我尝试从终端执行CGI脚本时出现以下错误:
Use of uninitialized value $friends{"Bob=416-333-6363"} in print at ./new-cgi/data.cgi line 24
这是我的剧本:
#!/usr/bin/perl -w
use strict;
my %friends;
my $name;
my $phone;
open FILE, "new-cgi/data.dat" or die ("No File\n");
while (<FILE>) {
chomp;
($name, $phone) = split(" ", $_);
$friends{$name}=$phone;
}
foreach (keys %friends) {
print "Name:", $_, "\n";
print "Phone:", $friends{$_}, "\n"; <--This is line 24
}
答案 0 :(得分:2)
很难看到没有看到你的new-cgi/data.dat
文件,但我认为数据格式是一堆像&#34; Bob = 416-333-6363&#34;在这种情况下,您希望拆分/=/
而不是" "
。
现在发生的事情是你在一个不存在的空白区域进行拆分,因此$name
(最终key
)得到整行,$phone
最终value
,获得undef
值。因此,当您稍后迭代哈希时,您会有一个包含大量键的哈希(尽管键的数据很奇怪)和undef
值。