Memoize

BasicWerk   EC Support   Technique   Facebook  

20141120204710_Perl_hash_or_block

Perl_hash_or_block

 

 

Perl では無名ハッシュもコードブロックも { } で表現するので、コンパイラに明示的にどちらなのか伝えたい場合があるかも知れない。

また、コードを誰かが見た時、はっきりと見分けられるようにしたいとか。

 
#! /usr/bin/perl
use warnings;
use strict;
 
# 明示的に無名ハッシュのつもりで { } を使うと
# コンパイラに伝えたい場合は +{ } と書く
my @members = (
    +{
        name	=>	'John',
        age		=>	34,
    },
    +{
        name	=>	'Sam',
        age		=>	24,
    },
);
print $members[0]->{name}, "\n";
# -> John
 
# { } がコードブロックであると明示的に示したい場合は
# 最初に ;(何もない文) を置いて {; } のようにする。
{;
    my $cnt = 0;
    sub counter {
        ++$cnt;
        print "$cnt\n";
    }
}
counter();
# -> 1
counter();
# -> 2
counter();
# -> 3
 

 


© Shin Nakamura/BasicWerk 2014