私はハッシュとハッシュ参照に慣れていないので、あなたが助けてくれることを望んでいる質問がありますか?
次のデータ構造があります。
$VAR1 = {
'http://www.superuser.com/' => {
'difference' => {
'http://www.superuser.com/questions' => '10735',
'http://www.superuser.com/faq' => '13095'
},
'equal' => {
'http://www.superuser.com/ ' => '20892'
}
},
'http://www.stackoverflow.com/' => {
'difference' => {
'http://www.stackoverflow.com/faq' => '13015',
'http://www.stackoverflow.com/questions' => '10506'
},
'equal' => {
'http://www.stackoverflow.com/ ' => '33362'
}
}
'difference'
キー内のすべての URL にアクセスして、URLに対して他のアクションを実行できるようにしたい場合、これらの要素にアクセスするための正しい方法または推奨される方法は何ですか?
たとえば、次の URL で終了し、foreach
ループ内で何かを実行できます。
http://www.superuser.com/questions
http://www.superuser.com/faq
http://www.stackoverflow.com/faq
http://www.stackoverflow.com/questions
- - - 編集 - - -
上記のデータ構造のさらに下の要素にアクセスするコード:
my @urls;
foreach my $key1 ( keys( %{$VAR1} ) ) {
print( "$key1\n" );
foreach my $key2 ( keys( %{$VAR1->{$key1}} ) ) {
print( "\t$key2\n" );
foreach my $key3 ( keys( %{$VAR1->{$key1}{$key2}} ) ) {
print( "\t\t$key3\n" );
push @urls, keys %{$VAR1->{$key1}{$key2}{$key3}};
}
}
}
print "@urls\n";
上記のコードを使用すると、次のエラーが発生するのはなぜですか?
Can't use string ("13238") as a HASH ref while "strict refs" in use at ....