Есть глупый вопрос по перлу. Не могу разобраться со ссылками на хэши - пробую создать хэш хэшей таким образом:#!/usr/bin/perl
for($i=1; $i<10; $i++)
{$hash1{$i} = { };
for($k=10; $k<20; $k++)
{
$ref = $hash1{$i};
$ref{$k} = "smth";
}
}а потом его прочитать:
foreach $akey (keys %hash1)
{
$ref_hash = $hash1{$akey};
print "$akey\n";foreach $bkey (keys %ref_hash)
{
print " $bkey\n";
}
}
В результате выводятся ключи только %hash1, а ключи тех хэшей, ссылки, на которые он должен бы содержать - нет. Наверное я его неправильно заполнил. Вот только как будет правильно?
>> Вот только как будет правильно?Ты скажи по-русски чего сделать-то хочешь ?!
>>> Вот только как будет правильно?
>
>Ты скажи по-русски чего сделать-то хочешь ?!
Нужно сделать так чтоб с каждым ключом первого хэша была ассоциирована ссылка на один из анонимных хэшей. Т.е. должно быть примерно так:хэш1:
1 => ссылка на хэш2
2 => ссылка на хэш3
3 => ссылка на хэш3
4 => ссылка на хэш5
и т.д.
>>>> Вот только как будет правильно?
>>
>>Ты скажи по-русски чего сделать-то хочешь ?!
>
>
>Нужно сделать так чтоб с каждым ключом первого хэша была ассоциирована ссылка
>на один из анонимных хэшей. Т.е. должно быть примерно так:
>
>хэш1:
>1 => ссылка на хэш2
>2 => ссылка на хэш3
>3 => ссылка на хэш3
>4 => ссылка на хэш5
>и т.д.примерно так
#!/usr/bin/perlfor (1..10) {
%tmphash = (
1 => 'a',
2 => 'b',
3 =>'c'
);
$hash{$i++} = \%tmphash;
}for (keys %hash) {
print "$_ ", join(',',keys %{$hash{$_}}), "\n";
}
>>>> Вот только как будет правильно?
>>
>>Ты скажи по-русски чего сделать-то хочешь ?!
>
>
>Нужно сделать так чтоб с каждым ключом первого хэша была ассоциирована ссылка
>на один из анонимных хэшей. Т.е. должно быть примерно так:
>
>хэш1:
>1 => ссылка на хэш2
>2 => ссылка на хэш3
>3 => ссылка на хэш3
>4 => ссылка на хэш5
>и т.д.#!/usr/bin/env perl -w
use strict;
my %hash = (
1 => { 10 => 100,
11 => 110,
12 => 120
},
2 => { 20 => 200,
21 => 210,
22 => 220
},
3 => { 30 => 300,
31 => 310,
32 => 330
},
);foreach my $key (sort(keys %hash)) {
foreach my $i (sort(keys %{$hash{$key}})) {
print $hash{$key}->{$i}, " ";
}
print "\n";
}