mapと波括弧とプラスの話

前回に引き続いて、こういう書き方もできるよっていう話。

use strict;
use warnings;
use v5.10;

use Data::Dumper;

my @foo = qw/0 1 2 3 4/;
my @bar = map $_ * 2, @foo;

say Dumper( \@bar );

これを実行するとこんな感じ。
$ perl aaa.pl
$VAR1 = [
0,
2,
4,
6,
8
];

こんな感じで、実行したい式を引数に渡すことが出来る。
ポイントとして、引数の区切りにカンマを忘れないこと。
カンマを忘れてしまうと、ブロック扱いになってシンタックスエラーになる。

そして、次は波括弧の前にプラスを付ける例。

use strict;
use warnings;
use v5.10;

use Data::Dumper;

my @foo = qw/0 1 2 3 4/;
my @bar = map +{ $_ => $_ }, @foo;

say Dumper( \@bar );

これは、前回の記事が理解できれば何のことはないですね。
$ perl bbb.pl
$VAR1 = [
{
'0' => '0'
},
{
'1' => '1'
},
{
'2' => '2'
},
{
'3' => '3'
},
{
'4' => '4'
}
];

ちなみに波括弧の前にプラスを付けないと、
シンタックスエラーになって実行できなかったです。

という訳で、波括弧の前にプラスが付いてても、
「ただのハッシュリファレンスかー。」って思えば問題ないですね。

ついでに、こちらの最後の方も目を通しておくと良いですね。
http://perldoc.jp/func/map

おしまい。

Leave a Comment