Thursday, June 3, 2010

Perl: создание хэша, используя массивы для keys и values

Для создания хэша из двух массивов @keys и @values удобно использовать слайсы:

my @keys   = glob "key{1,2,3}";
my @values = glob "val{1,2,3}";
my %hash;
@hash{@keys} = @values;


%hash приходится объявлять заранее. Однако, можно обойтись и без этого:

@$_{@keys} = @values for my %hash;

1 comment:

  1. К сожалению, нечитаемо, когда объявление переменной в правой части выражения.
    Еще можно

    # разрушая @values
    my %hash = map { $_ => shift @values } @keys;
    # не разрушая
    my %hash = map { $keys[$_] => $values[$_] } 0 .. $#keys;

    ReplyDelete