Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 標準関数
  3. here

map関数 - 配列のすべての要素の変換

配列のすべての要素を変換するにはmap関数を使用します。@arrayの各要素がデフォルト変数$_に渡されてきますので、コードブロック{ }の中で必要な変換を行います。変換文で最後に評価されたものが@mappedに順番に追加されます。

# 配列のすべての要素の変換
@mapped = map { 変換文 } @array;

サンプル

mapを使ってすべての要素を2倍するサンプルです。@numsが(1, 2, 3)の場合は@doubledは(2, 4, 6)になります。

# すべての要素を2倍
my @nums = (1, 2, 3);
my @doubled = map { $_ * 2 } @nums;

mapを使ってすべての要素の先頭の文字列を削除するサンプルです。@strsが('  a', '  b', '   c')の場合は@trimedは('a', 'b', 'c')になります。

# 先頭の空白を除く
my @strs = ('  a', '  b', '   c');
my @trimed = map { $_ =~ s/^\s+//; $_ } @strs;

ひとつの要素をふたつの要素に変換することもできます。@keysが('a', 'b', 'c')の場合は@mappedは(a => 1, b => 1, c => 1)になります。

# ふたつの要素に変換
my @keys = ('a', 'b', 'c');
my @mapped = map { $_ => 1 } @keys;

mapで書くことができるものはforeach文でも書くことができます。mapのほうが簡潔に記述できるのでPerlではよく利用されます。

# for
my @nums = (1, 2, 3);
my @doubled;
for my $num (@nums) {
  push @doubled, $num * 2;
}

参考「Perlの配列」

Perlの「配列」についての解説は以下をご覧ください。

Giblog