-1
在一個perl代碼的散列值,我試圖通過使密鑰存儲在2個獨立的陣列&值來初始化散列。 要初始化數組,數據是從再進行處理的文本文件&讀取。無法讀取在Perl
我跟着以下語法存儲密鑰&值代入散列:
@hash {@key} = @值;
當我嘗試顯示散列的內容時,我能夠單獨顯示鍵的內容&而不是值。爲什麼沒有哈希值取任何值?這怎麼解決?
文本文件
NAME,OWE,RECEIVE
RAM,2000,1000
TEJA,1500,2200
NANDHINI,400,3000
RAGHAV,0,5000
ETHI,100,2500
KESHAV,400,400
以下是我的代碼:
$i = 0;
open(FH, "<expenses_details.txt") or die "Couldn't open the file";
%nameo;
while ($line = <FH>)
{
chomp($line);
if ($i == 0)
{
$i++;
next;
}
($name, $owe, $receive) = split(',', $line);
#print "Name is:$name, Owe:$owe, Receive:$receive \n";
push(@names, $name); # Creating name array
push(@owes, $owe); #creating owe array
push(@receives, $receive); #creating receive array
}
close FH;
print "Name array:\n";
foreach (@names)
{
print "$_\n";
}
print "\nOWE array:\n";
foreach (@owes)
{
print "$_\n";
}
#Initialising owe hash
@nameo{@names} = @owes;
$size = keys %nameo;
print "\nsize is $size\n";
foreach my $key (keys %nameo)
{
print $key;
print $nameo[$key];
print "\n";
}
輸出中獲得:
Name array:
RAM
TEJA
NANDHINI
RAGHAV
ETHI
KESHAV
OWE array:
2000
1500
400
0
100
400
size is 6
TEJA
RAM
KESHAV
ETHI
NANDHINI
RAGHAV
你沒有訪問%nameo哈希值,但(不確定)@nameo陣列。嘗試$ nameo {$ key}而不是$ nameo [$ key]。 –
把'使用警告;'和'使用嚴格的;'你寫的每一個Perl程序的頂部。他們會幫助你處理這類案件。 –