Сколько существует YAPC::TV, столько существует и небольшой вспомогательный скрипт, который автоматизирует работу по конвертированию видеофайлов в разные форматы.
В этой программе есть функция convert, которая принимает ссылку на хеш:
sub convert {
my $param = shift;
И затем разыменовывает ее:
my $s = "-s $$param{s}" if $$param{s};
При этом каждый вызов convert содержит обилие скобок — одни для вызова функции, другие для создания анонимного хеша:
convert({
type => 'mpg',
s => '480x270',
r => 25,
b => '512kb',
ar => 22050,
});
Конечно, можно было бы вторые скобки не ставить вообще, а в функции принимать готовый хеш:
sub convert {
my %param = @_;
Но тут возникает вопрос о том, как этому научить начинающего программиста. Конструкции вида %hash = @array не так просто понять в начале изучения языка, как это кажется после нескольких лет использования перла.
Хотя различие между следующими двумя строками схватывается на ура:
$a = @a;
($a) = @a;
Можно вот так:
my %param = ( @_ );
Преобразование типа тут чуть более явное чем в вашем варианте :)
Хотя для начинающего программиста (если это не бывший Си-программер) "разыменование" - сложнее, ибо анахронизм, имхо :)