Perlオプションとスクリプト 99/3/20(Sat) 11:40pm

 Perlのオプションやスクリプトファイルを用いた使い方と ファイル入出力について説明します。

jperl -ne "print;" infile

 "-ne" はPerlのオプション"-n"と"-e"を合わせて書いたものです。

 "-n" は、標準入力からテキストデータを一行ずつ受け取ってスクリプトで処 理をするというループを作り出します。"-e" は次の""で括られた引数がスクリ プトであることを指定します。オプションを使わずに全体をスクリプトで書け ば、

-----^ scr001.pl
while(<>){
    print;
}
-----$ scr001.pl

となります。"print;" の行は受け取った行をそのまま標準出力(この場合はDOS 画面)に出力します。
 "-----^ scr001.pl" と "-----$ scr001.pl" の行で区切られた "while(<>){" の行から "}" の行までがスクリプトです。スクリプトの部分をエディタ(メモ 帳、ToolMan、VZ、WZ、秀丸、Dana、等)にコピーしてscr001.plというファイル 名を付けて保存してください。

jperl scr001.pl infile

とすれば同じ結果が得られます。

jperl -pe ";" infile
jperl -pe "" infile

でも同様の結果が得られます。

 "-p" オプションを使うと、

-----^ scr002.pl
while(<>){
    ;
} continue {
   print;
}
-----$ scr002.pl

と等価になります。

 これまで出てきた"<>"は"<STDIN>"の略で標準入力(STDINは標準入力のファイ ルハンドル)を意味しています。Perlを起動するコマンドラインで指定されたテ キストファイルからwhileループによって一行ずつ文字列が読みこまれます。

 "print;" は "print STDOUT $_;" の略です。"print"は文字列を出力する関数 で、出力先は標準出力を表すファイルハンドルSTDOUTで示され、出力する文字列 は"$_"で、この場合入力された文字列のままです。

 Perlを使って、文字列を一行ずつテキストファイルから読みこんで出力する方 法が大体説明できたかと思います。