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の「配列」についての解説は以下をご覧ください。

Perlの書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「こっ、こしゃくな。
このPerオタクめ~!」

Twitter
フォロー、いいね、リツート、コメント歓迎

Youtube

チャンネル登録、いいね、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

木本システム株式会社
ご紹介キャンペーン実施中です。契約金額の10%をご紹介料としてお支払い。

(例)30万円のシステム開発委託契約が、1年続いたら、36万円がもらえる!!!