Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Michael Samanov                      2:550/5068.1515 10 Jan 2001  20:53:54
 To : All
 Subject : Declare and init hash
 -------------------------------------------------------------------------------- 
 
 Hello, All!
 
 Disclaimer: чисто с позиций всяких там извращений. Hеизвращенцев
 прошу не беспокоиться.
 
 use strict;
 use Data::Dumper;
 
 my @keys = qw(a b c);
 my @values = qw(1 2 3);
 my %hash;
 @hash{@keys} = @values;
 print Dumper \%hash;
 
 Теперь начинаем корячиться, пытаясь сделать объявление и
 инициализацию хэша в один оператор. Сразу предупреждаю, что
 %hash = (a => 1, b => 2, c => 3) не подходит по условию задачи,
 а %hash = @keys => @values - просто не работает как надо.
 
 Для начала проверяем такую вот фигню:
 
 my $href = \my %hash;
 @{$href}{@keys} = @values;
 print Dumper \%hash;
 
 Это работает.
 
 # Вариант нумбер 1
 @{my $href = \my %hash}{@keys} = @values;
 # Вариант нумбер 2
 @{\my %hash}{@keys} = @values;
 print Dumper \%hash;
 
 Хоть в первом варианте, хоть во втором perl ругается, что в
 строчке с Dumper-ом %hash не объявлен. Видимо, он считает
 фигурные скобки вокруг \my %hash блоком со своей областью
 видимости :-(
 
 Конечно, есть еще такой вот способ:
 my %hash = map { $keys[$_] => $values[$_] } (0..$#keys);
 но он мне не нравится.
 
 В общем, уже лет 20-25 бьюсь над этой очень важной и насущной
 проблемой, но пока что безуспешно...
 
 Sincerely yours, Michael (mailto:mike@vlink.ru).
 --- ifmail v.2.14
  * Origin: Mike's home (2:550/5068.1515@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Declare and init hash   Michael Samanov   10 Jan 2001 20:53:54 
Архивное /ru.perl/7949ce010bcf.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional