Звучит так, будто хеш хранит данные так, как вы хотите получить к ним доступ. Построить его довольно просто:
#!/usr/bin/perl
use strict;
use warnings;
my $values = "70,20,50";
my %components_by_name;
@components_by_name{qw/R G B/} = split ",", $values;
my $result = join "",
sort { $components_by_name{$b} <=> $components_by_name{$a} }
keys %components_by_name;
print "$result\n";
Вы можете объявить пустой хеш, сказав:
my %hash;
При присвоении хешу вы можете сказать
$hash{key} = "value";
Но если назначить группу значений, ключи которых вы знаете заранее, часто проще использовать фрагмент хеша:
@hash{"key 1", "key 2", "key 3"} = ("value 1", "value 2", "value 3");
Если ваши ключи не содержат пробелов, вы можете использовать оператор qw//
, чтобы уменьшить количество шума в линии
@hash{qw/key1 key2 key3/} = ("value 1", "value 2", "value 3");
Доступ к значению в хэше аналогичен доступу к значениям в массиве, но вместо []
используется {}
, а ключ представляет собой строку вместо числа:
my $value = $hash{key1}; #$value now holds "value 1";
Чтобы получить все ключи в хэше, вы можете использовать функцию keys
:
my @keys = keys %hash;