perl 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")

当我尝试从终端执行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
}
#/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,'