#!/usr/local/bin/perl
use strict;
use warnings;
use utf8;
print "Content-type: text/html; charset=utf-8\n\n";
print "\n";
print "
\n";
print "CGIのテスト\n";
print "\n";
print "\n";
print "------------------
\n";
my @samp = ("B" , "C");
@samp = ("A" ,@samp , "D");
print "@samp
\n"; #⇒A B C D
my @samp1 = ( 'E', 'F' );
$samp1[2] = 'G';
@samp1[3..5] = ( 'H','I', 'J' );
print "@samp1
\n"; #⇒E F G H I J
my @samp2 = (@samp,@samp1);
print "原型: @samp2
\n"; #⇒A B C D E F G H I J
#unshift 配列の先頭に要素を追加する。
unshift(@samp2, "W"); # @samp2の先頭にWを追加する
print "unshift 先頭にW: @samp2
\n";#⇒W B C D E F G H I J
#push 配列の末尾に要素を追加する
push(@samp2, 'K'); # @samp2 の末尾にKを追加する
print "push 末尾にK: @samp2
\n"; #⇒W A B C D E F G H I J K
#shift 配列の先頭の要素を取り除く。
my $top_data = shift(@samp2); # ← @samp2 の先頭のデータを切り取る
print "shift 先頭削除: @samp2
\n"; #⇒A B C D E F G H I J K
#pop 配列の末尾の要素を取り除く。
my $str = pop @samp2;
print "popで削除された文字: $str
\n";#⇒K
print "pop 末尾削除: @samp2
\n";#⇒A B C D E F G H I J
#splice 配列の要素を任意の位置で削除/追加します。
# splice 配列, 削除する要素の開始位置, 要素の長さ,置き換えるリスト
# splice 配列, 削除する要素の開始位置, 要素の長さ
# splice 配列, 削除する要素の開始位置
#•開始位置は0から数える。負の値を使用すると末尾から数える。
#•要素の長さで削除する要素の大きさを指定する。省略すると最後まで削除する。
#•置き換えるリストを指定すると要素を置き換えることができる。
#splice @array, pos, [n], [list]
#対象、操作開始する位置(+:前からの位置0から始まる。-:後ろからの位置1から始まる。)
#、削除する要素数(記入無い場合は、以降全て削除)、置き換える要素列または要素。
# org: A B C D E F G H I J
my @str1 = splice(@samp2,-3); #後ろから3要素削除する。
print "1_splice残された文字: @samp2
\n"; #⇒A B C D E F G
print "1_spliceで削除された文字: @str1
\n";#⇒H I J
@str1 = splice(@samp2,5); #前から5要素を残して以降削除する。
print "2_splice残された文字: @samp2
\n"; #⇒A B C D E
print "2_spliceで削除された文字: @str1
\n";#⇒F G
my @samp4 = ( 'X', 'Y');
#前より1要素目から3要素削除し、そこへ@samp4を入れる。
@str1 = splice(@samp2,1,3,@samp4);
print "3_splice残された文字: @samp2
\n"; #⇒A X Y E
print "3_spliceで削除された文字: @str1
\n";#⇒B C D
#後ろから2要素目から1要素削除し、@samp4を入れる。
@str1 = splice(@samp2,-2,1,@samp4);
print "4_splice残された文字: @samp2
\n"; #⇒A X X Y E
print "4_spliceで削除された文字: @str1
\n";#⇒X Y
print "--------------------
\n";
#sort
# 昇順で並べ替え
#@sorted = sort { $a 演算子 $b } @array;
# 降順で並べ替え
#@sorted = sort { $b 演算子 $a } @array;
#
# 数値順での並び替えは <=> 、 辞書順での並び替えは cmp を使う。
#
# {}(コードブロック)の省略
# この場合は辞書順の昇順で並べ替えた場合と同じ意味となる
# @nums = sort {$a cmp $b} @nums; ⇒ @nums = sort @nums;
my @number1 = qw/ 5 3 1 4 2 0 6 8 7 9 /;
print "org: @number1
\n";
print "
\n";
print "☆SORT☆
\n";
my @number2 = sort {$a cmp $b} @number1;
print "sort 辞書順の昇順: @number2
\n";
@number2 = sort @number1;
print "sort 辞書順の昇順: @number2
\n";
@number2 = sort {$b cmp $a} @number1;
print "sort 辞書順の降順: @number2
\n";
@number2 = sort {$a <=> $b} @number1;
print "sort 数値順の昇順: @number2
\n";
@number2 = sort {$b <=> $a} @number1;
print "sort 数値順の降順: @number2
\n";
print "------------------
\n";
my @list = ('x', 'y', 'a', 'i', 'p', 'm');
@number1 = @list;
@number2 = sort @number1;
print "sort 辞書順の昇順: @number2
\n";
@number2 = sort {$b cmp $a} @number1;
print "sort 辞書順の降順: @number2
\n";
@number2 = sort {$a <=> $b} @number1;
print "sort 数値順の昇順: @number2
\n";
@number2 = sort {$b <=> $a} @number1;
print "sort 数値順の降順: @number2
\n";
print "------------------
\n";
my @o_list = qw/43 u P 8 あ か 山田 山本/;
@number1 = @o_list;
@number2 = sort @number1;
print "sort 辞書順の昇順: @number2
\n";
@number2 = sort {$b cmp $a} @number1;
print "sort 辞書順の降順: @number2
\n";
@number2 = sort {$a <=> $b} @number1;
print "sort 数値順の昇順: @number2
\n";
@number2 = sort {$b <=> $a} @number1;
print "sort 数値順の降順: @number2
\n";
print "------------------
\n";
#reverse
#リストの要素を逆に並べたリストを返す
my @r_list = (9, 77, 1, 222, 8, 4);
print "org: @r_list
\n";
my @rev_list = reverse @r_list;
print "reverse: @rev_list
\n";
# @rev_list は、( 4 8 222 1 77 9 )となる
print "------------------
\n";
print "\n";
print "\n";