- 変数
$price = 1000
というように,$を使う.
- パターン結合演算子
右辺の正規表現が左辺にマッチするかどうか調べる.
数字列かどうか判定する例として,
if ($line =~ /^\d+$/) {
print " $line is number\n";
}
- 配列とリスト
配列変数には,をつける.
@num = (1 , 2, 3)
各要素を参照するには,
print $num[0]
という具合に,最初の要素を参照する.
要素は $ を使って参照する.
- 配列の連結と分割
連結 join(区切り文字列,配列やリスト)
分割 split(パターン/, 文字列)
$line = 'Hello';
@array = split(//, $line);
print join(':', @array);
とすると,H:e:l:l:o と表示される.
$num = 12;
@array = split(//, $num);
foreach $file (@array) {
print "<img src=\"$file.gif\">";
}
とすると,
<img src="1.gif"><img src="2.gif">
と表示される.
$line ='10:20:30';
($a, $b, $c) = split(/:/, $line);
print " $a, $b, $c \n";
とすると,
10, 20, 30
と表示される.
- スタック,キュー操作
配列の先頭から要素を取り出すにはshift(配列),配列の先頭へ要素を追加する
には,unshift(配列,要素)を使う.
配列の末尾から要素を取り出すには,pop(配列),配列の末尾へ要素を追加する
にはpush(配列,要素)を使う.
- 配列要素の抜き出し,差し替え
% perldoc -f splice
splice ARRAY,OFFSET,LENGTH,LIST
splice ARRAY,OFFSET,LENGTH
splice ARRAY,OFFSET
splice ARRAY
....
OFFSETからLENGTH個数を取り除き,LISTで置き換える.
リストコンテクストでは,取り除かれた要素が返り,
スカラーコンテクストでは,除かれた要素の最後が返る.
The following equivalences hold
(assuming `$[ == 0'):
push(@a,$x,$y) splice(@a,@a,0,$x,$y)
pop(@a) splice(@a,-1)
shift(@a) splice(@a,0,1)
unshift(@a,$x,$y) splice(@a,0,0,$x,$y)
$a[$x] = $y splice(@a,$x,1,$y)
- マッチした範囲の参照
$str = '10,20,30';
if ($str =~ /(\d+),(\d+),(\d+)/) {
$a = $1;
$b = $2;
$c = $3;
print "$a:$b:$c\n";
}
のように,$番号で参照する.階層的にカッコがある場合には,
左カッコの順で決まる.
パターンの中で参照する場合には,\番号で参照する.
- 置換 s/置換前/置換後/
置換前パターンを置換後パターンで置き換える.
でてくるパターンすべてを置き換えるには,
s/置換前/置換後/g
とする.
$str = "How are you?\n";
$str =~ s/(\w+) (\w+)\?/$2 $1!/;
print $str;
とすると,
% perl ../../perl/replace.pl
How you are!
と表示される.