Для этого потребуется символьные ссылки , а вы не хотите делать это .Это опасная функция, которая действительно необходима и используется очень редко по очень конкретным причинам.Для всех других целей существуют и другие, более эффективные способы.
Вместо этого используйте анонимные массивы (или массив ссылки ), хранящиеся в структуре данных с массивом
my @data;
foreach $key (sort keys %hash) {
push @data, [ ... ]; # (populate with $hash data)
}
или хеш
my %data;
foreach $key (sort keys %hash) {
my $name = ...; # work out a suitable key-name
$data{$name} = [ ... ]; # populate with $hash data
}
Я не знаю, что помещать в анонимные массивы [ ... ]
, или каковы хорошие названия для ключей ($name
), так как этоне указано, что находится в хеше.
Возможно, что ваши хеш-значения на самом деле являются массивами, и в этом случае
my @data;
foreach $key (sort keys %hash) {
push @data, $hash{$key};
}
, кажется, подходит под вопрос, но на самом деле просто
my @data = map { $hash{$_} } sort keys %hash;
или, если вам не нужен предсказуемый порядок, основанный на ключах
my @data = values %hash;
Но я предполагаю, что есть еще что-то, что нужно сделать с данными хеша, прежде чем они будут сохранены в массивах.
Тогда вы можетессылаться на отдельный массив (ссылки) по индексу (или по имени в случае хэша).