Доступ к хешу хэшей, определенному в другом файле в Perl, и его печать
Теперь мой file1 содержит хэш хэшей, как показано ниже:
package file1;
our %hash = (
'articles' => {
'vim' => '20 awesome articles posted',
'awk' => '9 awesome articles posted',
'sed' => '10 awesome articles posted'
},
'ebooks' => {
'linux 101' => 'Practical Examples to Build a Strong Foundation in Linux',
'nagios core' => 'Monitor Everything, Be Proactive, and Sleep Well'
}
);
И мой file2.pl содержит
#!/usr/bin/perl
use strict;
use warnings;
require 'file1';
my $key;
my $key1;
for $key (keys %file1::hash){
print "$key\n";
for $key1 (keys %{$file1::hash{$key1}}){
print "$key1\n";
}
}
Теперь мой вопрос, я получаю ошибку
"Использование неинициализированного значения в хеш-элементе в file2.pl"
когда я пытаюсь получить доступ к хешу, как это:
for $key1 (keys %{$file1::hash{$key1}})
Пожалуйста, помогите.
1 ответ
Решение
Это потому что $key1
не определено.
Вы хотели использовать %{ $file1::hash{$key} }
вместо.
Обратите внимание, что если вы избегаете предварительного объявления $key1
, strict
Прагма может поймать это во время компиляции:
for my $key (keys %file1::hash){
print "$key\n";
for my $key1 (keys %{$file1::hash{$key1}}){
print "$key1\n";
}
}
Сообщение
Global symbol "$key1" requires explicit package name