使用

2016-09-24 8 views
0

私は、端末からの私の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"のような行の束であると仮定します。今、何が起こっている

あなたは非existant空白に分割しているということですので、$name(最終的key)、全体のラインと$phone最終的valueを取得undef値を取得します。だから、後でハッシュを反復するときには、たくさんのキー(キーのために奇妙なデータでも)とundefの値を持つハッシュがあります。