使い方
Perl Best Practices ネタ。
constant より Readonly の方が使い勝手が良い。
Readonly で宣言した変数は引数展開される
use strict; use warnings; use Readonly; use constant NAME => q{cooldaemon}; Readonly my $SEX => q{man}; print "NAME $SEX?n"; # prints: NAME man print <<"END_MESSAGE"; # prints: NAME man NAME $SEX END_MESSAGE my %status_for_flag = ( cooldaemon => 0, man => 1, ); print "flag = $status_for_flag{ NAME }?n"; # prints: flag = print "flag = $status_for_flag{ $SEX }?n"; # prints: flag = 1
スコープ制御できる
use strict; use warnings; use Readonly; Readonly $GLOBAL => q{global}; Readonly my $MY => q{my}; for (1..2) { Readonly my $COUNTER => $_; print "$COUNTER?n"; $COUNTER = 10; # error }
Scalar だけではなく Array や Hash も利用できる
use strict; use warnings; use Readonly; Readonly my @ARRAY => ( 1, 2, 3, ); Readonly my %HASH => ( key => q{value} ); use constant ARRAY_REF => [ 1, 2, 3, ]; use constant HASH_REF => { key => q{value} }; $ARRAY[0] = 4; # error ARRAY_REF->[0] = 4; # not error $HASH{ key } = q{foo}; # error HASH_REF->{ key } = q{foo}; # not error