P.204
例1:「カンマによる分断化」

$test = "85,100,90,65,70"; @ten = split /,/, $test; print "@ten";
<実行結果> 85 100 90 65 70
例2:「2種類の文字による分断化」
$test = "英語:85,数学:100,国語:90,理科:65,社会:70"; @ten = split /:|,/, $test; print "@ten";
<実行結果> 英語 85 数学 100 国語 90 理科 65 社会 70
イ)汎 用 型 @ten = split m/:|,/, $test; ロ)正規表現 @ten = split ":|,", $test; ハ)正規表現 @ten = split qr/:|,/, $test;
例1:「上限値を指定」
$test = "/85/100/90/65/70/"; @ten = split "/", $test, 50; for (@ten) {print "$_*\n"}; print @ten. " 個の要素";
<実行結果> * ← 空文字 "" (先頭) 85* 100* 90* 65* 70* * ← 空文字 "" (末尾) 7 個の要素
例2:「上限値を省略」
$test = "/85/100/90/65/70/"; @ten = split "/", $test; for (@ten) {print "$_*\n"}; print @ten. " 個の要素";
<実行結果> * ← 空文字 "" (先頭) 85* 100* 90* 65* 70* 7 個の要素
例1:「スペース処理」
$_ = "85 100906570"; @ten = split; for (@ten) {print "$_*\n"}; print @ten. " 個の要素";
<実行結果> 85* 100* 90* 65* 70* 5 個の要素
例2:「改行文字 \n の削除」
$_ = " 85\n 100\n 90\n 65\n 70\n"; @ten = split; print "@ten";
<実行結果> 85 100 90 65 70
例3:「任意の変数に対する処理」
$test = " 85\n 100\n 90\n 65\n 70\n"; @ten = split " ", $test; print "@ten";
<実行結果> 85 100 90 65 70
例4:「外部ファイルの読み取り」 実力テスト.txt」
1101 85 100 90 65 70 1102 90 95 60 75 80 1103 85 90 75 100 75 1104 90 85 90 95 80
open F, "実力テスト.txt"; for (<F>) {push @score, split} print "@score";
<実行結果> 1101 85 100 90 65 70 1102 90 95 60 75 80 1103 85 90 75 100 75 1104 90 85 90 95 80
例5:「/ / による半角スペースの削除」
$test = " 85\n 100\n90\n65\n 70\n"; @ten = split / /, $test; for (@ten) {print "$_* \n"}; print @ten. " 個の要素";
<実行結果> * 85 * 100 * * 90 * * 65 * 70 * 8 個の要素
例1:「// による配列化」
$score = "優優良優良良優優優可"; @results = split //, $score; print "@results";
<実行結果> 優 優 良 優 良 良 優 優 優 可
例2:「"" による配列化」
$DNA1 = "AGTATGCGTGACCATCTA"; @DNA2 = split "", $DNA1; print "@DNA2";
<実行結果> A G T A T G C G T G A C C A T C T A
例:「数値データの取り出し」
$test = "/英語:85, 数学:100, 国語:90, 理科:65, 社会:70/"; @ten = split /\W+/, $test; shift @ten; for (@ten) {print "$_ \n"}; print @ten. " 個の要素";
<実行結果> 85 100 90 65 70 5 個の要素
例1:「部分配列:前半」
$a = "1-2-3-4-5-6"; @b = (split /-/, $a)[0..2]; print "@b";
<実行結果> 1 2 3
例2:「部分配列:奇数」
$a = "英語,85,数学,100,国語,90,理科,65,社会,70"; @b = (split /,/, $a)[1,3,5,7,9]; print "@b";
<実行結果> 85 100 90 65 70
例3:「部分配列:任意」
$a = "1101:青山霞,英語-85,数学-100,国語-90,平均-91.7"; @b = (split /[:,-]/, $a)[0,1,8,9]; print "@b";
<実行結果> 1101 青山霞 平均 91.7
例1:「日付と時刻の表示」
@date = (99, 07, 15); @time = (12, 31, 47); $d = join "/", @date; $t = join ":", @time; print "受信日 $d $t";
<実行結果> 受信日 99/7/15 12:31:47
例2:「 +による結合」
$a = join " + ", (1..10); print "$a =";
<実行結果> 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 =
例3:「スケジュール表の枠をつくる」
@a = qw (月 火 水 木 金 土); $b = join "曜日:「 」\n\n", @a; $b .= "曜日:「 」"; # 足りない分を1つ追加します。 print $b; # これが1つの文字列として定義
<実行結果> 月曜日:「 」 火曜日:「 」 水曜日:「 」 木曜日:「 」 金曜日:「 」 土曜日:「 」
例4:「結合文字の指定なし」
@DNA1 = qw(A G T A T G C G T G A C C A T C T A); $DNA2 = join "", @DNA1; print "$DNA2";
<実行結果> AGTATGCGTGACCATCTA 例5:「半角英数文字による結合」
@a = qw (シキュウ カネ オクレ タノム); $b = join stop, @a; print $b;
<実行結果> シキュウstopカネstopオクレstopタノム
例1:「単純な文字列の結合」
$term = "1学期中間考査"; $name = "青山霞"; $result = "平均 82 点 クラス順位 2 位"; $test = join "", $term, " / ", $name, ":", $result; print $test;
<実行結果> 1学期中間考査 / 青山霞:平均 82 点 クラス順位 2 位
例2:「配列で定義した文字列の結合」
$term = "1学期中間考査"; @name = ("青山霞", "小川橙", "白瀬藍", "滄海澪"); @results = qw (82,2 33,4 56,3 90,1); for $i (0..3) { ($ten, $juni) = split /,/, $results[$i]; $test[$i] = join "", $term, " / ", $name[$i], ":平均 ", $ten, " 点 クラス順位 ", $juni, " 位" } for (@test) {print "$_ \n"}
<実行結果> 1学期中間考査 / 青山霞:平均 82 点 クラス順位 2 位 1学期中間考査 / 小川橙:平均 33 点 クラス順位 4 位 1学期中間考査 / 白瀬藍:平均 56 点 クラス順位 3 位 1学期中間考査 / 滄海澪:平均 90 点 クラス順位 1 位
例1:「数値の桁数」
$a = length 123456; print "$a 桁";
<実行結果> 6 桁
例2:「文字列の長さ」
$a = length "明日は、きっと晴れるでしょう.."; print "長さ:$a";
<実行結果> 長さ:32 ← length は日本語文字(全角文字)を "2" と数えます。
例3:「円周率の長さ」
$pi = length "3.1415 9265 3589 7932 3846 2643 3832 7950 2884 1971 6939 9375 1058 2097 4944 5923 0781 6406 2862 0899 8628 0348 2534 2117 0679"; print "長さ:$pi";
<実行結果> 長さ:126
例1:「数値の削除」
$a = 123456; chop $a; # 6 を削除します print "a = $a \n"; $b = chop $a; # 5 を削除しそれを変数に引き渡します print "a = $a(削除した数値 $b)"; # 両方の結果を表示します
<実行結果> a = 12345 a = 1234(削除した数値 5)
例2:「文字の削除」
$a = "あいうえお"; chop $a; # "お" を削除します print "文字列:$a \n"; $b = chop $a; # "え" を削除しそれを変数に引き渡します print "文字列:$a(削除した文字 $b)"; # 両方の結果を表示します
<実行結果> 文字列:あいうえ 文字列:あいう(削除した文字 え)
例1:「文字列の追加」
$a = $b = $c = "ABCDE"; substr ($a, 0, 0) = "四季"; # 先頭に"四季"を追加 substr ($b, 3, 0) = "春夏"; # 3番目に"春夏"を追加 substr ($c, -1, 0) = "秋冬"; # 最後の1つ手前に"秋冬"を追加 print "$a $b $c";
<実行結果> 四季ABCDE ABC春夏DE ABCD秋冬E
例2:「文字列の置き換えと部分取得」
$a = $b = $c = $d = "ABCDE12345"; substr ($a, -5, 3) = "月火"; # 末尾から5番目以降3個分を置き換え substr ($b, 5, -1) = "水木"; # 5番目以降1個残しで置き換え $c = substr $c, 5; # 5番目以降を全て取得 $d = substr $d, 5, -3; # 5番目以降後ろ3個残して残りを取得 print "$a $b $c $d";
<実行結果> ABCDE月火45 ABCDE水木5 12345 12