forとforeachは同じ。そして、forの反復子変数はエイリアス。

for と foreach は同じ

for

my @countries = qw/ Japan Korea China /;

for my $country ( @countries ) {
    print "$country\n";
}

結果

Japan
Korea
China

foreach

my @countries = qw/ Japan Korea China /;

foreach my $country ( @countries ) {
    print "$country\n";
}

結果

Japan
Korea
China

forの反復子変数はエイリアス

my @countries = qw/ Japan Korea China /;

for my $country ( @countries ) {
    $country = uc $country;
}

print "@countries\n";

結果

JAPAN KOREA CHINA

まとめ

以上。昨日知ったことでした。
forとforeachのことはともかく、エイリアスのことを知らずによくいままでコード書いてたよな…。

追記

コードにミスがあったので修正。