perl

起動方法

    perl [オプション] プログラムファイル 引数...

オプション

-v
perlのバージョンを表示する。

機能

レポート記述言語 perl(Practical Extraction and Report Language) は元々awkのように、テキストファイルを処理するために生まれたインタープリタ言語である。 しかし、今では数々の機能が追加されて、C言語でできることは(OpenGLなどを除いて)ほとんどできるほどの多機能な言語となっている。 文法は sed, awk, C言語をミックスして、+αしたような独特のものになっている。

長所

短所

変数

perlの変数はいつでも $(変数名) の形で表される。
変数には変数宣言は不用。
型の区別もない。

$x = 3;
変数$xに3を代入。
$y = $x * 3 + 2;
変数$yに$x * 3 + 2の計算結果を代入。
print "output $y\n"
変数$yの中身を出力。

配列

配列の全体は @(配列名) の形で表される。
配列のようその個数は $#(配列名) で参照できる。

@x = ( 1, 2, 3 );
配列@xの初期値として1,2,3の3つの値を設定。
print $x[2]
配列@xの2番目の値を出力。

連想配列

連想配列の全体は %配列名 の形で表される。

%x = ( 'red',10,'green',20,'blue',30 );
連想配列%xの初期値としてredに10,greenに20,blueに30の3つの値を設定。
print $x{'red'};
連想配列%xの'red'の値を出力。

特殊変数(配列)

$_
入力、パターンマッチのデフォールトの対象
$.
入力ファイルの現在の行番号
$/
入力レコードのセパレータ(デフォールトは改行、複数指定可能)
$?
最後に実行した`Command`、パイプ、systemの返り値
$0
実行中のPerlスクリプトのファイル名
$$
実行中のPerlのプロセス番号
$|
0以外にすると出力が行われるたびにフラッシュされる
$@
最後に実行したeval, require, doなどのエラーメッセージ
@ARGV
実行時の引数の入った配列
@_
サブルーチンへの引数が入る配列
%ENV
環境変数の入った配列

関数

die LIST
die(LIST)
LISTの部分を出力して、exitする。出力は指定されていない時はSTDERRになる。 エラーメッセージを出力してプログラムを終る時に使用される。
open(FILEHANDLE,EXPR)
EXPRにしたがったファイルをオープンする。FILEHANDLEが以降の読み書きに使用される。
"ファイル名"
ファイルを読むためにオープンする。
">ファイル名"
ファイルを書き込み用にオープンする。
">>ファイル名"
ファイルを書き込み用にオープンする。(後ろに追加)
"|コマンド名"
出力をコマンドの標準入力に出力する。
pack(TEMPLATE,LIST)
LISTのデータをTEMPLATEにしたがってバイナリーデータにまとめる。
TEMPLATEの部分には次の文字を使用できる。
A
スペースで区切られた文字列
a
NULLで区切られた文字列
c
signed char
c
unsigned char
s
signed short
S
unsigned short
i
signed int
I
unsigned int
l
signed long
L
unsigned long
f
float
d
double
(例)
$rgb = pack("ccc",10,20,30);
10,20,30を3バイトのデータにまとめて変数$rgbに代入する。
$rgb = pack("c3",10,20,30);
上と同じ。
print LIST
print(LIST)
printf(LIST)
LISTを標準出力に出力する。
ただしselectが使用されていた場合は、そこで指定されたファイルに書き込む。
print FILEHANDLE LIST
print(FILEHANDLE LIST)
printf(FILEHANDLE LIST)
LISTをFILEHANDLEの示すファイルに書き込む。
read(FILEHANDLE,SCALAR,LENGTH)
FILEHANDLEの示すファイルからLENGTHバイト読み込んでSCALARの変数へ代入する。
返り値は読み込んだデータのバイト数。
unpack(TEMPLATE,EXPR)
packの逆。まとまったバイナリーデータを分解する。
(例) ($red,$green,$blue) = unpack("ccc",$rgb);
変数$rgbの中身を1byteづつのデータにして、それぞれを$red,$green,$blueに代入する。

プログラム例

参考文献


Home | Contents
Mail