P.223
例1:「1つの要素の追加」

@ink = (cyan, magenta, yellow); push @ink, black; print "@ink";
<実行結果> cyan magenta yellow black
例2:「2つの要素の追加」
@ink = (cyan, magenta, yellow); push @ink, "silver", "gold"; print "@ink";
<実行結果> cyan magenta yellow silver gold
例3:「配列の追加」
@ink = (cyan, magenta, yellow); @RGB = (red, green, blue); push @ink, @RGB; print "@ink";
<実行結果> cyan magenta yellow red green blue
例1:「配列の最後の要素の削除」
@ink = (cyan, magenta, yellow); pop @ink; print "@ink";
<実行結果> cyan magenta
例2:「配列の最後の要素の受け取り」
@ink = (cyan, magenta, yellow); $c = pop @ink; print $c;
<実行結果> yellow
例1:「1つの要素の追加」
@ink = (cyan, magenta, yellow); unshift @ink, white; print "@ink";
<実行結果> white cyan magenta yellow
例2:「2つの要素の追加」
@ink = (cyan, magenta, yellow); unshift @ink, "metallic", "woody"; print "@ink";
<実行結果> metallic woody cyan magenta yellow
例3:「配列の追加」
@ink = (cyan, magenta, yellow); @HSL = (hue, saturation, light); unshift @ink, @HSL; print "@ink";
<実行結果> hue saturation light cyan magenta yellow
例1:「配列の先頭の要素の削除」
@ink = (cyan, magenta, yellow); shift @ink; print "@ink";
<実行結果> magenta yellow
例2:「配列の先頭の要素の受け取り」
@ink = (cyan, magenta, yellow); $c = shift @ink; print $c;
<実行結果> cyan
例1:「3番目以降の要素を全て削除」
@a = qw (A B C D E F G H I J); splice@a, 3; print "@a";
<実行結果> A B C
例2:「3番目以降削除した要素を取得」
@a = qw (A B C D E F G H I J); @b = splice@a, 3; print "@b";
<実行結果> D E F G H I J
例1:「3番目以降2つだけ削除」
@a = qw (A B C D E F G H I J); splice@a, 3, 2; print "@a";
<実行結果> A B C F G H I J
例2:「3番目以降2つだけ削除した要素を取得」
@a = qw (A B C D E F G H I J); @b = splice@a, 3, 2; print "@b";
<実行結果> D E
例1:「最後から3番目以降の要素を全て削除」
@a = qw (A B C D E F G H I J); splice@a, -3; print "@a";
<実行結果> A B C D E F G
例2:「最後から6番目以降の要素を3つだけ削除」
@a = qw (A B C D E F G H I J); splice@a, -6, 3; print "@a";
<実行結果> A B C D H I J
例1:「3番目以降の要素を4つ削除しその後に要素 "あ" を追加する」
@a = qw (A B C D E F G H I J); splice@a, 3, 4, "あ"; print "@a";
<実行結果> A B C あ H I J
例2:「3番目以降の要素を4つ削除しその後に配列 @b を追加する」
@a = qw (A B C D E F G H I J); @b = qw (あ い う); splice@a, 3, 4, @b; print "@a";
<実行結果> A B C あ い う H I J
例3:「要素の割り込み」
@a = qw (A B C D E F G H I J); splice @a, 3, 0, "あ"; print "@a";
<実行結果> A B C あ D E F G H I J
例:「undef による変数と配列のクリア」
$a = 123456; @b = qw (A B C D E F G H I J); undef$a; undef@b; $c = $a + @b; print "$aと@bの和 = $c";
<実行結果> との和 = 0
例1:「1 に等しい要素」
@a = (4, 1, 2, 4, 1, 3, 5, 2, 2, 1, 5); @b = grep $_ == 1, @a; # 1 に等しい print "@b";
<実行結果> 1 1 1
例2:「60〜80 の要素」
@a = (45, 75, 35, 90, 85, 50, 45, 60, 80); @b = grep (($_ >= 60 and $_ <= 80) , @a); # 60〜80 の設定 print "@b";
<実行結果> 75 60 80
例3:「"優" に等しい」
@a = qw (優 良 可 良 良 優 可 優); @b = grep $_ eq "優", @a; #"優" に等しい print "@b";
<実行結果> 優 優 優
例1:「"AT" を含む」
@a = qw (CAT ACG AAC TGA CGG ATG GAA CTT); @b = grep /AT/, @a; # "AT" を含む要素 $c = @b; # マッチした要素の個数 print "$c 個:@b";
<実行結果> 2 個:CAT ATG
例1:「全要素を一律に 10 倍する」
@a = qw (7.26.89.27.03.54.68.16.5); map $_ *= 10, @a; # 10 倍する print "@a";
<実行結果> 72 68 92 70 35 46 81 65
例2:「全要素から改行文字 \n を削除」
@a = ("15\n", "30\n", "75\n", "80\n", "50\n"); map chomp, @a; # 改行文字 \n を削除 print "@a";
<実行結果> 15 30 75 80 50
例3:「全要素に文字を追加」
@color = qw (赤 白 黄 深紅 青 すみれ); map $_ .= "色", @color; # "色" を追加 print "@color";
<実行結果> 赤色 白色 黄色 深紅色 青色 すみれ色
例4:「配列内の文字を置換」
@menu = qw ( チョコレートパフェ バナナパフェ フルーツパフェ); map s/バナナ/ピーチ/, @menu; # "バナナ" を "ピーチ" に置換 print "@menu";
<実行結果> チョコレートパフェ ピーチパフェ フルーツパフェ
例5:「配列内の文字の変換」
@results = qw(優 優 良 優 優 良 優 良 良 優 良 可); map tr/優良可/ABC/, @results; # "優良可" を "ABC" に変換 print "@results";
<実行結果> A A B A A B A B B A B C
例1:「4 に等しい」
@a = (4, 7, 3, 8, 4, 4, 5, 2, 6, 1); @b = map $_ == 4, @a; # 4 に等しいかどうかを評価する $c = @b; print "要素の数 $c 個:(@b)";
<実行結果> 要素の数 10 個:(11 1)
例2:「4 を含む」
@a = (4, 7, 3, 8, 4, 4, 5, 2, 6, 1); @b = map /4/, @a; # 4 を含むかどうかを評価する $c = @b; print "要素の数 $c 個:(@b)";
<実行結果> 要素の数 3 個:(1 1 1)
例3:「真偽での結果表示」
@a = (4, 7, 3, 8, 4, 4, 5, 2, 6, 1); @b = map $_ == 4, @a; foreach (@b) {$_ == 1 ? push @c, "真" : push @c, "偽"} print "(@c)";
<実行結果> (真 偽 偽 偽 真 真 偽 偽 偽 偽)
例1:「先頭の文字を大文字に変える」
@a = qw (mozambique tanzania zambia uganda eritrea zaire); @b = map ucfirst, @a; print "@b";
<実行結果> Mozambique Tanzania Zambia Uganda Eritrea Zaire
例2:「全ての文字を大文字に変える」
@a = qw (mozambique tanzania zambia uganda eritrea zaire); @b = map uc, @a; print "@b";
<実行結果> MOZAMBIQUE TANZANIA ZAMBIA UGANDA ERITREA ZAIRE
例3:「各文字列の長さを取得する」
@a = qw (mozambique tanzania zambia uganda eritrea zaire); @b = map length, @a; print "@b";
<実行結果> 10 8 6 6 7 5
例1:「配列内の要素を逆順に並べ替える」
@a = (1..9); @b = reverse @a; print "@b";
<実行結果> 9 8 7 6 5 4 3 2 1
例2:「文字列を逆順に並べ替える」
$a = "日月火水木金土"; $rvs = join "", reverse split //, $a; print $rvs;
<実行結果> 土金木水火月日
例3:「カンマによる数値の3桁区切り」
$a = 2**40; $rvs = join "", reverse split //, $a; $rvs =~s/(...)/\1,/g; $a2 = join "", reverse split //, $rvs; print "a = $a2";
↑訂正版

$_ = 2**40; $_ = join "", reverse split //; s/(...)/\1,/g; s/,\z//; $a = join "", reverse split //; print "2**40 = $a";

<実行結果> a = 1,099,511,627,776
例1:「英文字の並べ替え」
@a = qw (peach Peach apple Apple orange Orange); @b = sort @a; print "@b";
<実行結果> Apple Orange Peach apple orange peach
例2:「数値の並べ替え」
@a = (11, 99, 100, 44, 100, 30, 70, 60, 5); @b = sort@a; print "@b";
<実行結果> 100 100 11 30 44 5 60 70 99
イ)数値
sub"サブルーチン名" {$a <=> $b}; @d = sort "サブルーチン名" @c;
ロ)数値・簡略型
@d = sort {$a <=> $b} @c;
ハ)文字列
sub"サブルーチン名" {$a cmp $b}; @d = sort "サブルーチン名" @c;
ニ)文字列・簡略型
@d = sort {$a cmp $b} @c;
例1:「数値の昇順の並べ替え」
@score = (11, 99, 100, 44, 100, 30, 70, 60, 5); sub up {$a <=> $b} @score = sort up @score; print "@score";
<実行結果> 5 11 30 44 60 70 99 100 100
例2:「数値の昇順の並べ替え(簡略型)」
@score = (11, 99, 100, 44, 100, 30, 70, 60, 5); @score = sort {$a <=> $b} @score; print "@score";
<実行結果> 5 11 30 44 60 70 99 100 100
例3:「数値の降順の並べ替え(簡略型)」
@score = (11, 99, 100, 44, 100, 30, 70, 60, 5); @score = sort {$b <=> $a} @score; print "@score";
<実行結果> 100 100 99 70 60 44 30 11 5
例1:「大文字・小文字を区別しない文字の並べ替え」
@fruits = qw (peach Apple orange grape Papaya); @fruits = sort {lc $a cmp lc $b} @fruits; print "@fruits";
<実行結果> Apple grape orange Papaya peach
例2:「文字列の長さによる文字の並べ替え」
@fancy = qw (cat butterfly spider armadillo mouse); @fancy = sort {length $a <=> length $b} @fancy; print "@fancy";
<実行結果> cat mouse spider butterfly armadillo