© 2005 Martin J. Dürst 青山学院大学
1.1 スカラ変数: データを一個 (数か文字列) 納められる「箱」みたいな物
1.2 演算子: 計算の種類 (例えば足し算、割り算) を表す記号
1.3 代入: 変数にデータを入れる演算・操作のこと
1.4 配列: データを複数納められる変数で、一個一個は番号でアクセスできる
1.5 文字列: 文字が順番に並んでいるデータのこと。例: "Hello, World!"
$i
と $j
の数、$s
と $t
の文字列を比べる演算子を書け例 | $i が $j より小さい |
$i < $j |
2.1 | $i が $j と同じ |
$i == $j |
2.2 | $i が $j 以上 |
$i >= $j |
2.3 | $i が $j と等しくない |
$i != $j |
2.4 | $s が $t と同じ |
$s eq $t |
2.5 | $s が $t より大きい |
$s gt $t |
例 | $i + $j |
足し算 |
3.1 | $i * $j |
掛け算 |
3.2 | $i / $j |
割り算 |
3.3 | $i += $j |
$j を $i に足す (代入演算) |
3.4 | $i % $j |
割り算の余り |
3.5 | $s .= " hello" |
$s の末尾に " hello" をくっつける (代入演算) |
4.1 のプログラム:
$i = 0; while ($i < 3) { print ("hello"); $i++; }
出力: hellohellohello
4.2 のプログラム:
$i = 5; $k = 7; if ($i > $k) { print "$i is greater"; } else { print "$k is greater"; }
出力: 7 is greater
プログラム check.pl
:
$low = shift(); $high = shift(); $check = shift(); if ($check < $low) { print "too low"; } elsif ($check >= $high) { print "too high"; } else { print "okay"; }
5.1 の呼び出し: check.pl 4 5 8
出力: too
high
5.2 の呼び出し: check.pl 4 8 8
出力: too
high
5.3 の呼び出し: check.pl 4 8 5
出力:
okay
5.4 の呼び出し: check.pl 3 7 3
出力:
okay
5.5 の呼び出し: check.pl 9 5 7
出力: too
low
while
)while (<>) { print join ",", split " "; }
プログラム内の処理:
while (<>) { # 行ごとの処理 }
(<>
の代わりに <STDIN>
も書ける)
プログラムの使い方:
C:\perl>prog.pl <inputfile.txt >outputfile.txt
入力の行の文字列を調べる
例: "the" が含まれている行だけを出力:
while (<>) { if (/the/) { print; } }
+
: 直前の物が一回以上/a+/
は a, aa, aaa, aaaa,... と合う?
: 直前の物の有無/a?/
は a と「空文字列」と合う*
: 直前の物が 0 回以上/a*/
は「空文字列」、a, aa, aaa, aaaa,...
と合う|
: 両側の選択肢/abc|def/
は abc もしくは def と合う()
: 組み合わせ、つかみ取り/(abc)+/
は abc, abcabc, abcabcabc,... と合う正規表現で文字の集合を表すことが多い。
(0|1|2|3|4|5|6|7|8|9)
は長すぎて不便。
文字の集合: [0123456789]
(文字コードで) 連続する数字は -
で省略できる: [0-9]
^
で反対の集合を表せる: [^0-9]
:
数字を含まない文字集合
どの文字でも良いのは .
で表す
正規表現の最初に ^
が来ると先頭から合わないといけない
例: /^The/
: "The" から始まる文字列
正規表現の最後に $
が来ると末尾から合わないといけない
例: /\.$/
: 行の最後に "." (\
はエスケープの記号)
正規表現の最初に ^
と最後に $
が来ると全部が合わないといけない
例: /^abc$/
: abc
/
.../
もしくは
置き換え:
.../
(m
は
"match")s/
.../
.../
(s
は "substitute") の前の部分split
の第一引数 (但し、join
は違う)$string =~ m/
.../;
$string !~ m/
.../;
(合わないことの条件)$string =~ s/
.../
.../;
$_
Perl では、多くの操作、命令は何を対処にしているのか書かなくても良い
その場合には変数$_
が対処となる
例:
print;
は $_
を出力m/.../
は $_
と合うかどうかチェックする<>
は $_
に読み込むヘボン式の主な特徴