誰かが私がどこが間違っているのか教えてもらえますか?私はそれを理解することができません....基本的に私のコードがしようとしているのは、ファイルを読み取り、各ファイルのハッシュを作成することです。これらのハッシュはハッシュ上に編成されています。ユーザーは2つのパラメーターを入力します。1つは外側のハッシュのキーで、もう1つは内側のパラメーター用です。私が入力したのは都市とPITです。分解する行の前に書いたパラメータと同じです。
何千回も試しましたが、次のエラーが発生し続けます。コードでその行をコメント化したHASH参照として未定義の値を使用することはできません。2つのファイルはcitys.txtです。school.txt。それらの内容は次のとおりです。PIT\tPittsburghNY \ tNewYork
#!/bin/perl -w
use strict;
use Data::Dumper;
our %hash_all = ();
sub readHash{
my @vars = @_;
my $filename = $vars[0];
my %iptable = ();
if(open(IN,$filename.".txt")) {
while(<IN>) {
my @tmp = split(/\t/);
$iptable{$tmp[0]} = $tmp[1];
}
}
return %iptable;
}
sub loadAll{
my %school = readHash("school");
my %city = readHash("cities");
$hash_all{school} = \%school;
$hash_all{city} = \%city;
print Dumper(\%hash_all);
}
sub queryValue{
my @pars = @_;
my $key1 = $pars[0];
my $key2 = $pars[1];
print "key1".$key1;
print "key2".$key2;
print Dumper(\%hash_all);
my %temp = %{$hash_all{"city"}};#THIS LINE WORKS
print $temp{"PIT"}; #THIS LINE WORKS
my %temp2 = %{$hash_all{$key1}};#THIS LINE HAS AN ERROR
print $temp2{$key2};
}
loadAll();
my $par1 = <>;
my $par2 = <>;
queryValue($par1,$par2);