Acme大全
出た! 電子書籍
Acme大全2014
夏コミ(東N37b)で頒布してたのを入手しました。
波括弧の前のプラス(+{})
ときどき+{ }という表現を見かけて「これはなんだろう」と首をかしげる人がいる。ググろうにもどうやって検索すればいいのやら……
[私だ!]
要はperlに「これは無名ハッシュだ」と教えるためのものである。{}はブロック(スコープブロック、サブルーチンブロック)と無名ハッシュの両方で使われるため、時々perlが混乱するからだ。
あ〜『波括弧の前のプラス』で検索すれば良いのか…
$ vim sample.pl use strict; use v5.10; use Data::Dumper; my @foo = qw/q b c d e/; my @bar = map { my $n = ord $_ ; { $_ => $n } } @foo; my @baz = map { my $n = ord $_ ; +{ $_ => $n } } @foo; say Dumper (\@bar ); say Dumper (\@baz );
$ perl sample.pl $VAR1 = [ 'q', 113, 'b', 98, 'c', 99, 'd', 100, 'e', 101 ]; $VAR1 = [ { 'q' => 113 }, { 'b' => 98 }, { 'c' => 99 }, { 'd' => 100 }, { 'e' => 101 } ];
サブルーチンの属性
こうゆう感じでサブルーチンに任意の属性を持たせられる。属性の設定などに関してはatributesプラグマを使うが説明は省略。
sub method : fee :bar('baz') { . . . }
Perl使いは誰しも一度はatributeにはまるとか(そして不要なものとして去っていく)。
- 無精・短気・傲慢