perl/foreach文

#! usr/bin/perl

use strict;
use warnings;

my @array1=qw(koma goma kuma guma KOMA 45 666 11);
my @array2=qw(58 5334 111 11 98 342);

#公式=>foreach my 変数 (リスト){処理内容}
foreach (@array1){
    print "$_\n";
}

print "\n";

foreach (sort(@array1)){
    print "$_\n";
}

print "\n";

foreach (reverse(sort(@array1))){
    print "$_\n";
}

print "\n";

=head
#リストに文字列が入っていると、sort{$a<=>$b}(リスト)は使えない
foreach (sort{$a<=>$b}(@array1)){
    print "$_\n";
}
=cut

foreach (@array2){
    print "$_\n";
}

print "\n";

foreach (sort(@array2)){
    print "$_\n";
}

print "\n";

foreach (sort{$a<=>$b}(@array2)){
    print "$_\n";
}

リストと配列の違いについて。

リスト/「,」で区切ったものを()で囲んだもの。 配列/@array
概念 要素を並べたもの 要素を並べた変数
直接書き換えれるか できない できる
sort関数/リストの要素を書き換えるのではなく、要素を並べた別のリストを新しく作る。 shift関数/引数に与えられた配列を直接書き換える。引数の配列は、与えられたときの要素を失う。

以下のコマンドで関数を調べると、引数にリストがくるのか配列がくるのか分かります。

perldocs -f 関数名