Доброго всем времени суток, вот такой вопрос из серии "хак или не хак".
Потребовалось задавать некоторые настройки скрипта в виде опций в командной строке, а те, которые не заданы — те оставлять по умолчанию, и один гигакодер написал что-то вроде нижеследующего (как вы, надеюсь, понимаете, 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), хотя лично я никогда не слышал о такой штуке, как "ссылка на элемент хэша". Откуда, собственно говоря, и вопрос — а не хак ли это?
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)