最大値を求めてみよう
最大値を求める方法をPerlプログラムを用いて説明します。
配列の最大値を求めてみよう。
以下のような正の数(>0)のみが含まれる配列を考えてみます。
@array = (1, 8, 3, 5, 7);
配列の最大値を求めるサンプルプログラム
実際に配列から最大値を求めます。List::Utilモジュールにmax関数がありますが、この例では利用しません。
最大値を保存するための変数を用意し、配列の要素と1つずつ比較することで最大値を求められます。
use strict;
use warnings;
my @array = (1, 8, 3, 5, 7);
my $max = 0;
for my $num (@array) {
if ($max < $num) {
$max = $num;
}
}
print "$max\n";
実行結果
8
1つ1つ比較していて処理がとてもわかりやすいかと思います。
※コードを単純化するために正の数(>0)のみが含まれる配列を扱います。
表形式のデータから、特定の列の最大値を求めてみよう。
以下のデータを考えてみましょう。
| name | age |
|---|---|
| bob | 9 |
| tom | 14 |
| alice | 11 |
配列,ハッシュのリファレンスで表すと以下のようになります。
$array_ref = [
{name => 'bob', age => 9},
{name => 'tom', age => 14},
{name => 'alice',age => 11}
];
age列の最大値を求めるサンプルプログラム
参照するデータが複雑になったためデータアクセスも少し難しくなりましたが、
チェックする方法は先ほどと同じです。
use strict;
use warnings;
my $array_ref = [
{name => 'bob', age => 9},
{name => 'tom', age => 14},
{name => 'alice',age => 11}
];
my $max = 0;
for my $info (@{$array_ref}) {
if ($max < $info->{'age'}) {
$max = $info->{'age'};
}
}
print "$max\n";
実行結果
14
リファレンスを扱った以外は先ほどと同じ処理になります。
このプログラムは、コピー&ペーストして、PerlBanjoで、すぐに試すことができます。
Perlデータ分析入門