Perl, великий и могучий

Заметка на правах шпаргалки.

Попытался я намедни из массива внести в хеш несколько элементов слеив их в строку с разделителем. Первоначально написал вот так

my %add=(); my @items=();
...
open my $ADDFILE, '<', $addon || croak $!;
while (<$ADDFILE>) {
    chomp;
    my @items = split /;/x;
    $add{ $items[1] } = join ';', $items[$_] for ( 4, 7, 10 );
}
close $ADDFILE;
...

Все как обычно, но кроме перечисления элементов @items, решил завернуть это в for, указав их индексы. Почти, но не сработало 🙂

И тут я обнаружил (да для меня это, как ни странно, было ново), что можно подступится к элементам не через скалярное обращение $items[n], а через списочное и можно указать несколько индексов. Т.е. вышло вот так

my %add=(); my @items=();
....
open my $ADDFILE, '<', $addon || croak $!;
while (<$ADDFILE>) {
    chomp;
    my @items = split /;/x;
    $add{ $items[1] } = join ';', @items[ 4, 7, 10 ];
}
close $ADDFILE;
...

p.s. Кстати, весьма советую поставить perl-support плагин для vim. Очень удобно приводить код в порядок, и отдатвать на съедение perl critique.