我正在读一个文件。我想要一个散列,它给我一行的第一个数字作为该行其余部分的所有数字到 1 的散列的键。
我相信我正确地添加了哈希,因为 Dumper 打印正确。但是, print "$first $secondID\n" 没有给我任何输出。
while (<FILE>) {
chomp $_;
if (/(\d+)\t(.+)/) {
$firstNum = $1;
@seconds = split(/\,/,$2);
foreach $following (@seconds) {
$Pairs->{$firstNum}{$following} = 1;
}
foreach $first (sort {$a <=> $b} keys %Pairs) {
print "$first\n";
%second = {$Pairs{$first}};
foreach $secondID (sort {$a <=> $b} keys %second) {
print "$first $secondID\n";
}
}
print Dumper($Pairs);
}
else {
print "ERROR\n";
}
}
稍后,给定一对数字,我想查看 $Pairs{$num1}{$num2} 是否已定义。我会写吗
if(defined $Pairs{$num1}{$num2})
或者我应该先检查第一个键。然后检查第二个键
if (defined $Pairs{$num1}) {
$temp = $Pairs{$num1};
if (defined $temp{$num2}) {
print "true\n;
}
}