2016-09-24 71 views
0

我收到以下錯誤,當我試圖從終端執行我的CGI腳本中使用未初始化值誤差:在Perl 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

你確定你不應該在'='上分裂嗎? – tadman

+0

這就是我要告訴的 –

+0

@tadman我正在使用拆分來拆分姓名字段和電話號碼字段。 –

回答

2

難看到沒有看到您的new-cgi/data.dat文件,但我認爲數據格式是一堆線,如「Bob = 416-333-6363」,在這種情況下,您想分割/=/而不是" "

現在所發生的事情是,你在一個不存在的空白,從而$name(最終key)被拆分整條生產線和$phone最終value,得到一個undef值。所以當你在後面迭代散列時,你有一個散列有很多鍵(儘管鍵的奇數)和undef的值。