トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

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にはまるとか(そして不要なものとして去っていく)。