ハッシュのスライス

スライス自体使わなかったから、いざ使ってるコード見たら、やってることは分かるが、何で実現できるのか理解できなかった罠。

use strict;
use Data::Dumper;

use constant CONST => qw/one two thr/;

my %type;

@type{+CONST} = ('const') x CONST;

print Dumper \%type;
$VAR1 = {
          'one' => 'const',
          'thr' => 'const',
          'two' => 'const'
        };

変数名が適切じゃないとかは置いといて。CONSTは配列。typeはハッシュ。

左辺:@typeと、シジルを@にしてやってるのでリストコンテキスト。CONSTが展開される。(スライスだから)
右辺:('const')は要素1のリスト、x演算子で、それにCONSTの要素数をかけてやる。

結果、CONSTの要素をキーに持ち、'const'をバリューに持つハッシュの出来上がり。
自分がこういうことをやれと言われたら、mapで書いてただろうか。