在perl cgi中使用未初始化的值错误

时间:2016-09-24 23:38:38

标签: 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
}

1 个答案:

答案 0 :(得分:2)

很难看到没有看到你的new-cgi/data.dat文件,但我认为数据格式是一堆像&#34; Bob = 416-333-6363&#34;在这种情况下,您希望拆分/=/而不是" "

现在发生的事情是你在一个不存在的空白区域进行拆分,因此$name(最终key)得到整行,$phone最终value,获得undef值。因此,当您稍后迭代哈希时,您会有一个包含大量键的哈希(尽管键的数据很奇怪)和undef值。