perl cgi中使用未初始化值报错
Use of uninitialized value error in perl cgi
当我尝试从终端执行我的 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
}
很难在没有看到 new-cgi/data.dat
文件的情况下看到,但我假设数据格式是一堆像 "Bob=416-333-6363" 这样的行,在这种情况下你想在 /=/
上拆分而不是" "
.
现在发生的事情是你在一个不存在的空格上拆分,所以 $name
(最终的 key
)得到整行,$phone
最终的 [=16] =], 得到一个 undef
值。因此,当您稍后迭代散列时,您会得到一个包含很多键(尽管键的数据为奇数)和 undef
值的散列。
当我尝试从终端执行我的 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
}
很难在没有看到 new-cgi/data.dat
文件的情况下看到,但我假设数据格式是一堆像 "Bob=416-333-6363" 这样的行,在这种情况下你想在 /=/
上拆分而不是" "
.
现在发生的事情是你在一个不存在的空格上拆分,所以 $name
(最终的 key
)得到整行,$phone
最终的 [=16] =], 得到一个 undef
值。因此,当您稍后迭代散列时,您会得到一个包含很多键(尽管键的数据为奇数)和 undef
值的散列。