Perl入門ゼミ

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

each関数 - ハッシュのすべてのキーと値を処理する

each関数を使用するとハッシュとキーと値のペアを取得することができます。繰り返し使用することで、すべてのキーと値を取得できます。

# ハッシュのキーと値のペアの取得
my ($key, $value) = each %hash;

eachを連続して使用するとすべての(キー, 値)のペアを順番に取得できます。取得する(キー, 値)のペアの順番は不定です。

# (キー, 値)のペアを順番に取得
my %age = (Ken => 19, Mike => 34);
while (my ($name, $age) = each %age) {
  ...
}

each関数を実践で使用することは少ないと思います。同じ処理が、keys関数を使って行うことができ、keys関数を使ったほうが柔軟性が高いからです。現在のPerlでは、keys関数が最適化されているので、パフォーマンス上においても、each関数に比べて、keys関数が遅いということはありません。

ハッシュのすべての値だけを取得するにはvalues関数を使うこともできます。

サンプルプログラム

ハッシュのすべての要素をeach関数を使って処理するサンプルです。

use strict;
use warnings;

# 生徒の数学の点数
my %math_scores = ( 
  Taro => 89,
  Naoko => 54,
  Kenji => 54,
);

# ハッシュのすべての要素をeach関数を使って出力する。
print "1: ハッシュのすべての要素each関数を使って出力する\n";
while (my ($key, $value) = each %math_scores) {
  print "%math_scores{$key} = " . $math_scores{$key} . "\n";
}
print "\n";

実行結果

1: ハッシュのすべての要素each関数を使って出力する
%math_scores{Kenji} = 54
%math_scores{Taro} = 89
%math_scores{Naoko} = 54
  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。