#!/usr/local/bin/perl
use strict;
use warnings;
# ex_for_foreach.txt
print "Content-type: text/html; charset=utf-8\n\n";
print "\n";
print "\n";
print "
\n";
print "CGI test\n";
print "\n";
print "\n";
print "-----------------
\n";
# =================================================
# for ($count ; expr ; step) { statements }
# $count カウンターとして使う変数
# expr 条件式。これが真の場合のみステートメントが繰り返される。
# step 繰り返すことにカウンターに加算する数を指定します。
my @aaa = ("田中","山田","竹内");
for(my $i = 0 ; $i <= $#aaa ; $i++) {
print $aaa[$i],"くん1","\n";
}
print "
\n";
#参考 $iには@aaaの要素の最後尾の番号が入る(ここでは2)
my $i = $#aaa;
print "最後尾の番号=",$i,"
\n";
print "
\n";
for(0..$#aaa) {
print $aaa[$_],"くん2","\n";
}
print "
\n";
for(0..(@aaa-1)) {
print $aaa[$_],"くん3","\n";
}
print "
\n";
#参考
my $j = @aaa; # $jには@aaaの要素数が入る(ここでは3)
print "要素数=",$j,"
\n";
print "
\n";
for(@aaa) {
print $_,"くん4","\n";
}
print "
\n";
#多次元配列
my @m_list = (
['1', '2', '3'],
['4', '5', '6'],
['7', '8', '9'],
);
for my $x (0 .. 3) {
for my $y (0 .. 3) {
print "$m_list[$x][$y]\n";
}
print "
\n";
}
# ===============================================
# foreach [$var] (@array) { [statements] }
# $var 省略可。省略した場合は特殊変数 $_ に代入される
# @array ここで指定された配列が0番から$varに代入される
# statements 省略可
foreach my $tmp (@aaa) {
print $tmp,"さん1","\n";
}
print "
\n";
foreach my $aaa (@aaa) {
print $aaa,"さん2","\n";
}
print "
\n";
foreach (@aaa) {
print $_,"さん3","\n";
}
print "
\n";
foreach my $tmp (0..$#aaa) { # $#aaaは、要素数-1
print $aaa[$tmp],"さん4","\n";
}
print "
\n";
foreach my $i (5, 4, 3, 2, 1) {
print " $i \n";
} # 出力 5 4 3 2 1
print "
\n";
foreach my $i (5, 4, 3, 2, 1) {
if ($i == 3) { next; } # nextは、ループをスキップする
print " $i \n";
} # 出力 5 4 2 1
print "
\n";
foreach my $i (5, 4, 3, 2, 1) {
if ($i == 3) { last; } # lastは、ループを終了する
print " $i \n";
} # 出力 5 4
print "
\n";
my %fruit = ("red", "apple", "yellow", "banana", "violet", "grape");
foreach my $var (keys %fruit) {
my $val = $fruit{$var};
print "${var}=\"${val}\"
\n";
}
# ⇒ violet="grape"
# red="apple"
# yellow="banana"
foreach my $var (sort(keys %fruit)) {
my $val = $fruit{$var};
print "${var}=\"${val}\"
\n";
}
# ⇒ red="apple"
# violet="grape"
# yellow="banana"
# ${$a{A}}{AA}=aa ${$a{A}}{AB}=ab ${$a{A}}{AC}=ac
# $a{B}->{AA}=ba $a{B}->{AB}=bb $a{B}->{AC}=bc
# $a{C}{AA}=ca $a{C}{AB}=cb $a{C}{AC}=cc
my %mulcha = (
'A' => { 'a' , 1, 'b' , 2, 'c' , 3 },
'B' => { 'd' , 4, 'e' , 5, 'f' , 6 },
'C' => { 'g' , 7, 'h' , 8, 'i' , 9 }
);
foreach my $j (sort keys %{$mulcha{'C'}}) {
print "\$mulcha{C}{$j}=$mulcha{'C'}{$j}
\n";
}
print "
\n";
foreach $i (sort keys %mulcha) {
foreach $j (sort keys %{$mulcha{$i}}) {
print "\$mulcha{$i}{$j}=$mulcha{$i}{$j}
\n";}
print "
\n";}
#------------------------------------
# ========== while ==========
# while ( 条件 ) { 実行 } 「条件」が真である間は「実行」を実行
print "\n";
my $y = 0;
while ($y < 3) {
print "\n";
my $x = 0;
while ($x < 5) {
my $i = $y * 5 + $x + 1;
print "";
print $i;
print " | \n";
$x++;
}
print "
\n";
$y++;
}
print "
\n";
print "*** ケース1 ***\n";
my $count = 1;
while ($count) {
print "\$count = $count\n";
--$count;
}
print "
\n";
print "*** ケース2 ***\n";
$count = 1;
while ($count) {
print "\$count = $count\n";
$count--;
}
print "
\n";
print "*** ケース3 ***\n";
$count = 1;
while (--$count) {
print "\$count = $count\n";
}
print "
\n";
print "*** ケース4 ***\n";
$count = 1;
while ($count--) {
print "\$count = $count\n";
}
print "
\n";
print "-----------------
\n";
print "\n";
print "\n";