Как отсортировать массив хэшей по значению в perl? - PullRequest
0 голосов
/ 12 марта 2012

У меня есть программа, которая находит все файлы в каталоге и создает хеш-массив их имен и размеров.

пример

%files = ("file1" => 10, "file2" => 30, "file3" => 5);

Я хочу иметь возможность сортироватьфайлы по размеру по убыванию и добавить имена / значения в новый массив.

пример

%filesSorted = ("file2" => 30, "file1" => 10, "file3" => 5);

Я нашел много способов отсортировать массив по значению, а затем распечатать значения, но это не такчто я хочу.

1 Ответ

6 голосов
/ 12 марта 2012

Вы должны поместить имена файлов в массив в отсортированном порядке. В отличие от хэшей Perl, массивы упорядочены и сохранят свой порядок. Этот код демонстрирует точку с использованием ваших собственных данных

use strict;
use warnings;

my %files = (file1 => 10, file2 => 30, file3 => 5);

my @sorted = sort { $files{$b} <=> $files{$a} } keys %files;

foreach my $file (@sorted) {
  print "$file => $files{$file}\n";
}

OUTPUT

file2 => 30
file1 => 10
file3 => 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...