Perl

Perlはテキスト処理に長けたスクリプト言語です。

perl

Perlプログラムを実行するには、perlコマンドの引数にプログラムファイル名を指定して実行します。たとえば、プログラムファイル名が test.pl である場合、プロンプトから次のように入力します。

$ perl test.pl

プログラムファイルに実行権を付与して、プログラムファイルを直接実行する方法もあります。この場合、プログラムファイルの先頭に次の1行を記述しておきます。

#!perlコマンドの絶対パス名

たとえば、perlコマンドの絶対パス名が /usr/bin/perl である場合、プログラムファイルの先頭に次のように記述します。

#!/usr/bin/perl

こうしておくことで、このファイルを実行するために必要なプログラムを指定できます。プログラムファイルに実行権を付与すれば、直接プログラムファイルを実行できます。

$ chmod +x test.pl
$ test.pl

<

左辺が右辺より小さければ真、そうでなければ偽を返します。

>

左辺が右辺より大きければ真、そうでなければ偽を返します。

<=

左辺が右辺より小さいか等しければ真、そうでなければ偽を返します。

>=

左辺が右辺より大きいか等しければ真、そうでなければ偽を返します。

==

左辺と右辺が等しければ真、等しくなければ偽を返します。

!=

左辺と右辺が等しくなければ真、等しければ偽を返します。

<=>

左辺が右辺より小さければ-1、等しければ0、大きければ1を返します。

lt

左辺が右辺より小さければ真、そうでなければ偽を返します。

gt

左辺が右辺より大きければ真、そうでなければ偽を返します。

le

左辺が右辺より小さいか等しければ真、そうでなければ偽を返します。

ge

左辺が右辺より大きいか等しければ真、そうでなければ偽を返します。

eq

左辺と右辺が等しければ真、等しくなければ偽を返します。

ne

左辺と右辺が等しくなければ真、等しければ偽を返します。

cmp

左辺が右辺より小さければ-1、等しければ0、大きければ1を返します。

コメント

Perlスクリプトにおいて、# から行末まではコメント(注釈)となる。

# comment

変数

変数 とは、プログラムで扱われる数値や文字列などの値を一時的に記憶しておく領域のことです。変数を識別するために、ひとつひとつの変数に固有の名前を付けておきます。これを 変数名 といいます。

変数は常に $ から始まります。使用する前にあらかじめ宣言する必要はありません。

変数に値を代入するには、代入演算子 = を使用します。

$変数名 = ;

変数に代入する値として、数値や文字列、変数を指定することができます。

$price = '$23.50';

標準入力からデータを読み取る

標準入力からデータを読み取って変数に代入するには、代入する値として <STDIN> または <stdin> を指定します。

$変数名 = <STDIN> ;

標準入力からデータを読み取って画面に表示する例を次に示します。

$var = <STDIN>;
print $var;

配列

同種のデータを複数扱う場合、配列変数を使用することができます。配列の書式は次のとおりです。

$変数名[添え字]

配列の添え字には、数値や文字列、変数を指定することができます。

$array[1] = 12;
$array[2] = 5;
$amount['Apr'] = 3;

配列の要素数は $# 変数名 で参照できます。

$#変数名

$$

プロセスID

$<

ユーザID

$>

実効ユーザID

$(

グループID

$)

実効グループID

$0

プログラム名

$]

Perlのバージョン

$^O

OSの名前

$^X

Perlの実行ファイル名

定義済み変数の使用例を次に示します。

$ cat sample.pl
print "$^O $^X $] $0\n";
print "PID:$$ UID:$< EUID:$> GID:$( EGID:$)\n";
$ perl sample.pl
solaris perl 5.00503 sample.pl
PID:640 UID:103 EUID:103 GID:101 101 EGID:101 101

do

do { ... } until 終了条件

終了条件の代わりに繰り返し条件を指定することもできます。

do { ... } while 繰り返し条件
do {
  $line = <STDIN>
} while $line eq ".\n";

for

for (1, 2, 3) { ... }
for (1..3) { ... }

if

if (条件式) { ... }

条件式が真であればブロックの中の文が実行されます。

if (条件式) { ... } else { ... }

条件式が真であればブロックの中の文が実行されます。条件式が偽であれば else の後のブロックが実行されます。

if (条件式1) { ... } elsif (条件式2) { ... } else { ... }

条件式1が真であればブロックの中の文が実行されます。条件式1が偽であれば elsif の条件式2 を検査します。条件式2が真であれば elsif 後のブロック内の文が実行されます。いずれの条件式も偽であれば else の後のブロックが実行されます。

alarm

指定した秒数が経過した後に、自プロセスに SIGALRM シグナルが送られるようにする。

alarm [seconds]
seconds
シグナルが送られるまでの秒数を指定する。省略した場合は、$_ 変数の値が使われる。
alarm 60;

chdir

chdir directory

作業ディレクトリを directory に指定されたディレクトリに変更します。成功したらTRUE、失敗したらFALSEを返します。

chdir '/tmp';

close

close filehandle

filehandle で指定されたファイルハンドルに関連付けられたファイルまたはパイプをクローズします。もし正常にクローズできれば TRUE を返します。

closedir

closedir dirhandle

opendir() でオープンされたディレクトリをクローズします。

die

die 文字列

文字列 に指定された文字列を標準エラー出力に出力して、プログラムを終了します。

chdir '/usr/tmp' or die "failed to change directory";