Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 構文
  3. for文

for文 - 要素番号を使用した繰り返し

要素番号を使って繰り返し処理を行うにはforを使用します。繰り返しの構文としては他にwhileとforeachがありますがforは配列の要素番号が必要な場合に使用されます。

# for
for (カウンタ変数の初期化; 条件; カウンタ変数の更新) {
  ...
}

for文を使った繰り返しについては以下で詳しく解説しています。

サンプル

配列の要素を順番に出力するサンプルです。

# 配列の要素を順番に処理
my @nums = (3, 4, 5);
for (my $i = 0; $i < @nums; $i++) {
  print "$i: " . $nums[$i] . "\n";
}

データ構造が配列のリファレンスの場合に配列の要素を順番に出力するサンプルです。

# 配列の要素を順番に処理(配列のリファレンス)
my $nums = [3, 4, 5];
for (my $i = 0; $i < @$nums; $i++) {
  print "$i: " . $nums->[$i] . "\n";
}

2次元配列のすべての要素を順番に出力するサンプルです。Perlでは2次元配列はリファレンスを使用して作成する必要があります。

# 2次元配列の要素をすべて出力
my $data = [
  ['a', 1],
  ['b', 2]
];

for (my $i = 0; $i < @$data; $i++) {
  for (my $k = 0; $k < @{$data->[$i]}; $k++) {
    print "($i, $k) : " . $data->[$i]->[$k] . "\n";
  }
}

2次元配列に含まれる値を行ごとにタブ区切りで出力するサンプルです。

# 2次元配列を行ごとにタブ区切りで出力
my $data = [
  ['a', 1],
  ['b', 2]
];

for (my $i = 0; $i < @$data; $i++) {
  print join("\t", @{$data->[$i]}) . "\n";
}

for文のいくつかのサンプルです。

<pre>
use strict;
use warnings;

print "[1]\n";
for (my $i = 0; $i < 5; $i++) {
  # 1づつ加算して、$valが、5になったとき、ループを抜ける。
  print "$i\n";
}
print "\n";

print "[2]\n";
my @chars = qw/a b c d e/;
for(my $i = 0; $i < @chars; $i++){
  # @chars(配列のサイズ)は、5なので,$indexが、5になったとき、ループを抜ける。
  print "$chars[$i]\n";  
}
print "\n";

実行結果

[1]
0
1
2
3
4

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