perl cgi中未初始化值错误的使用
当我尝试从终端执行CGI脚本时,出现以下错误:perl cgi中未初始化值错误的使用,perl,cgi,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")
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
}
#/usr/bin/perl-w
严格使用;
我%的朋友;
我的$name;
我的美元手机;
打开文件“new cgi/data.dat”或die(“无文件”);
而(){
咀嚼;
($name,$phone)=拆分(“,$”);
$friends{$name}=$phone;
}
foreach(键%friends){
打印“名称:”,$\“\n”;
打印“Phone:”,$friends{$},“\n”;如果看不到您的新cgi/data.dat
文件,很难看到,但我假设数据格式是一组类似“Bob=416-333-6363”的行,在这种情况下,您希望在/=/
而不是
上拆分
现在发生的事情是,您在一个不存在的空格上拆分,$name
(最终的键
)得到整行,$phone
最终的值
,得到一个未定义的
值。因此,当您稍后迭代散列时,会得到一个包含大量键的散列(虽然键有奇数数据)和undef
值。如果看不到新的cgi/data.dat
文件,就很难看到,但我假设数据格式是一组类似“Bob=416-333-6363”的行,在这种情况下,您希望在/
而不是”
上拆分
现在发生的事情是,您在一个不存在的空格上拆分,$name
(最终的键
)得到整行,$phone
最终的值
,得到一个未定义的
值。因此,当您稍后迭代散列时,会得到一个包含大量键的散列(尽管键的数据很奇怪)和undef
值。你确定不应该在=
上拆分吗?这就是我要告诉你的too@tadman我正在使用拆分来拆分姓名字段和电话号码字段。看起来姓名和电话号码之间用“=”分隔,而不是空格。请尝试拆分“=”一些改进建议。1/-w
在2000年发布Perl 5.6时已过时。1/在文件打开错误消息中包含$!
(打开…或死亡$!
).3/使用3-arg打开和词法文件句柄-打开我的$file\u h,'你确定不应该在=
上拆分吗?这就是我要告诉你的too@tadman我正在使用拆分来拆分姓名字段和电话号码字段。看起来姓名和电话号码之间用“=”分隔,而不是空格。请尝试拆分“=”一些改进建议。1/-w
在2000年发布Perl 5.6时已过时。1/在文件打开错误消息(open…或die$!
)中包含$!
)。3/使用3-arg打开和词法文件句柄-打开我的$file\u h,'