Perl

リンク

Win系のコマンドラインからスクリプト実行

echoコマンドからのパイプ

echo print "Hello World!"; | perl

eオプションからの実行

perl -e "print 'Hello World!';"

コードの最初と最後に " が必要なため、コード内でダブルクォーテーションで囲んだエスケープシーケンスが使えない。
代わりに q{} で囲む工夫がいる。

perl -e "print q{Hello World!};"

ソース直記述

perl

のみでコマンドを実行すると以降はソースと解釈する。
ソースと書いた後に CTRL+Z を押すと ^Zのような文字が出る。

print "Hello World!";
^Z

さらにエンターを押すと、スクリプトの終了と解釈してそこまでの内容を実行する。
CTRL+D でもできるようだ。
この書き方だとダブルクオートや文字数の制限を受けない。

Perlモジュール(.pm)のインストール

コマンドラインで以下を実行すると自動インストールしてくれる。

ppm install モジュール名(※)

※モジュール名の「::」は「-」に置き換えること。

特殊変数

ファイルハンドルごとの変数
$|0 ならハンドルへの出力をフラッシュしない。バッファリングともいう。
print write 毎に出力すると改行や一定量に達するまでデータを貯める。
0 以外ならフラッシュする。
$%セレクト中の出力ファイルハンドルの現在のページ番号。
write 実行中に改ページされると増加する
$=セレクト中の出力ファイルハンドルの現在のページ長
$-セレクト中の出力ファイルハンドルの現在のページに残されている行数
$~セレクト中の出力ファイルハンドルに設定されているフォーマットの名前
$^セレクト中の出力ファイルハンドルに設定されているページ先頭フォーマットの名前
関数内などのローカル変数
$1
$2
...
$9
最後に成功したパターンマッチの括弧にマッチしたパターン。
対応するのがなければ未定義値
$&最後に成功したパターンマッチでマッチした文字列
$`最後に成功したパターンマッチでマッチした文字列より前の部分
$'最後に成功したパターンマッチでマッチした文字列より後の部分
$+最後に成功したパターンマッチで最後の括弧の対にマッチした文字列
グローバルな変数
$_入力操作やパターンマッチのデフォルトになる変数。
chop,print,その他。
foreach で代入する変数を略した場合にも使われる。
@_ split の結果やサブルーチンへの引数がセットされる配列。
ただし引数が無い場合、括弧を省いて実行するとセットされない。
@ARGVコマンドライン引数
%ENV環境変数が入っている。
%SIGシグナルハンドラを設定する。
$.最後に入力を行ったファイルハンドルの現時点での行番号
$/入力レコードのセパレータ。デフォルトでは "\n"
未定義値を入れると分割せず、全部一度に読み込む。
"" だと2行以上の空行を1つの空行と認識、"\n\n"は1つの空行だけを認識。
$\print 演算子が出力のたびに末尾に追加するセパレータ。
デフォルトでは空文字列。
$,print 演算子が出力のたびにリストの間にはさみこむセパレータ。
デフォルトでは空文字列。
$"print 演算子がダブルクオートで囲んだ文字列の中で
配列を展開する際に間にはさみこむセパレータ。デフォルトでは空白文字。
$#print 演算子が数値を表示するときに用いる出力フォーマット。
デフォルトでは %.20g。あまり触らないほうがいいらしい。
$$スクリプトを実行しているPerlのプロセス番号
$?パイプのクローズ、``によるコマンド実行、system 演算子によるコマンド実行のうち
最後に行ったものが返したエラーコード。
$*1 をセットすると文字列が複数行を含んでいると仮定し、
^ $ での行頭行末判定が全体の先頭と末尾になる。
0 なら一行だけだと仮定してパターンマッチを行う。
$0実行しているPerlスクリプトのファイル名。
OSによってフルパスである場合とそうでない場合がある。
$[配列の先頭要素の添え字と、文字列中の先頭の文字のオフセットを返す。
substr($str,$[,2)で先頭から2バイトの意味。$a[$[]で配列の先頭。デフォルトでは 0。
1にすると配列の添え字付け、index,substr関数が awk 風になる。
$]perl -v を実行したときに表示される文字列の先頭部分がセットされる。
Perl インタープリタのバージョンが正しいかチェックできる。
$;多次元配列のエミュレートに使う添え字セパレータ。デフォルトでは \034
$!現在のエラー番号を返す。
$@eval,do-FILE,require コマンドのうち、
最後に実行したものが返したエラーメッセージがセットされる。
$<このプロセスの実 uid。
$>このプロセスの実効 uid。
$(このプロセスの実 gid。
$)このプロセスの実効 gid。
$:フォーマットの ^ フィールドに対して詰め込み整形を行う際に、
この変数に含まれる文字の直後で改行することができる。
$^DPerlの内部デバッグフラグの現在の値
$^Fシステムファイル記述子の最大値。通常は 2
$^I-i スイッチによるファイル内容の書き戻しを行う際に
バックアップファイルにつける拡張子。
undef を代入するとファイルの置き換えは行われない。
$^Lwrite によるフォーマット出力で、改ページする際にこの変数の内容を出力する。
デフォルトは \f。
$^Pデバッガが内部的に使用するフラグ。
$^Tスクリプトの実行を開始した時刻。time 演算子と同じ形式。
-A -C -M 演算子が参照する。
$^W警告スイッチの現在の値。
$^X現在実行中の Perl インタプリタの名前。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規新規下位 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-06-17 (水) 23:55:59 (2984d)