Итак, сначала вы делаете что-то неприятное в своем коде:
Вы пытаетесь взять упорядоченную структуру данных - a rray - и вставьте его в структуру данных с ключами, которая не имеет определенного порядка упорядочения.
Это не будет работать очень хорошо - это технически работает, потому что внутренне perl обрабатывает массивы и хеши аналогично.
Но, например, ваше первое задание - то, что вы на самом деле получают:
my %hash = (
one => 1,
two => 2,
three => 3,
four => 4
);
Вы можете получить доступ ключей (в произвольном порядке) через keys()
. И значения через values()
. Но попробовать и обработать его, как массив, является неопределенным поведением.
Для добавления элементов в массив:
$hash{'nine'} = 9;
Чтобы удалить элементы из вашего массива:
delete ($hash{'one'});
Вы можете перебирать на keys
или values
- и в сочетании с sort
даже сделать их в какой-то порядка. (Просто помните, что для сортировки буквенно-цифровых чисел у вас будет собственное задание сортировки).
foreach my $key (sort keys %hash) {
print "$key => $hash{$key}\n";
}
(Примечание - это сортировка по буквенно-цифровой строкой, поэтому дает:
four => 4
one => 1
three => 3
two => 2
Если вы хотите отсортировать по значению:
foreach my $key (sort { $hash{$a} <=> $hash{$b} } keys %hash) {
print "$key => $hash{$key}\n";
}
И так вы получите:
one => 1
two => 2
three => 3
four => 4
Так что реальный вопрос rema ins - что вы на самом деле пытаетесь выполнить? Точка хеша должна предоставить вам неупорядоченную мини-базу данных пар ключ-значение. Рассмотрение одного, как массив, не имеет большого смысла. Либо вы повторяете элементы хэша в произвольном порядке, либо применяете к нему определенный вид - но тот, где вы полагаетесь на получение элементов в определенном порядке, является плохим планом - он может работать, но это не гарантировано работать, и это делает неправильный код.
Вы пытаетесь нажать кнопку HASH, нажмите для ARRAYs –
@sputnick Что я могу попробовать для хэшей? – mkHun
Обязательно ознакомьтесь с ['perldsc'] (http://perldoc.perl.org/perldsc.html), который является основной ссылкой на документацию. Perl Maven имеет [довольно хорошее базовое резюме хэшей] (http://perlmaven.com/perl-hash). –