perl: ссылка на элемент хэша?
От: slava_phirsov Россия  
Дата: 29.12.09 08:19
Оценка:
Доброго всем времени суток, вот такой вопрос из серии "хак или не хак".

Потребовалось задавать некоторые настройки скрипта в виде опций в командной строке, а те, которые не заданы — те оставлять по умолчанию, и один гигакодер написал что-то вроде нижеследующего (как вы, надеюсь, понимаете, print в данный фрагмент кода я вставил специально, чтобы полюбоваться результатами):

use warnings;
use strict;

use Getopt::Long;

my %vars = (foo => 'abc', bar => 'def');
Getopt::Long::GetOptions('foo=s' => \$vars{foo}, 'bar=s' => \$vars{bar});

for (keys %vars) {
    print "$_ => $vars{$_}\n";
}


Вообще-то говоря, в Getopt::Long::GetOptions есть возможность прямо задавать ссылку на хэш в качестве аргумента, но сей комсомолец учился преодолевать трудности, и дал ссылки на элементы хэша. И оно заработало (во всяком случае на Perl 5.8.8), хотя лично я никогда не слышал о такой штуке, как "ссылка на элемент хэша". Откуда, собственно говоря, и вопрос — а не хак ли это?
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.