付録2
■ Perlのコマンドオプション
| オプション | 説明 |
|---|---|
| -0xxx | 入力レコードの区切り文字($/)を8進数で指定します。 |
| -a | オートスプリットモード。-n または -p と組み合わせた場合、入力をスペースで自動的に区切って、予約変数 @F に代入します。 |
| -c | スクリプトの構文チェックのみを行い、実行せずに終わります。 |
| -d | perl をデバッグモードで起動します。 |
| -Dnumber | デバッグフラグ。このフラグを使用するには、perl がデバッグモードでコンパイルされている必要があります。 |
| -e script | script を perl のスクリプトとして実行します。例えば、「perl -e "print 5 * 3"」 は 5 * 3 の結果 15 を表示します。 |
| -iext | perl -p -i.bak -e "s/\r\n/\n/" file1.txt とすると、file1.txt ファイルに対して s/\r\n/\n/ の操作(Windows 形式の改行から UNIX 形式の改行への変換)を行い、file1.txt を更新します。また、file1.txt のバックアップを file1.txt.bak として残します。 |
| -Idir | C言語プリプロセッサがヘッダファイルを探すディレクトリ(省略時は /usr/include と /usr/lib/perl)を指定します。(→ -P) |
| -loct | 8進数 oct で指定した値を特殊変数 $\ に設定します。このコードは、すべての print 文の末尾に付加されます。 |
| -n | スクリプトを while (<>) { ... } で囲んで実行します。 |
| -p | スクリプトを while (<>) { ... } continue { print; } で囲んで実行します。 |
| -P | スクリプトを実行する前にC言語のプリプロセッサ処理(#define #ifdef #else #endifなど)を行います。 |
| -s | コマンドラインで、オプションに対応する変数を 1 に設定します。例えば、perl -s script -abc file.txt は、$abc が 1 となり、@ARGV は file.txt のみを含んだ状態で実行されます。 |
| -S | 環境変数 PATH からスクリプトファイルを探します。 |
| -u | スクリプトをコンパイルした後、コアダンプさせます。このコアファイルを undump コマンドで実行することにより、ファイルサイズは大きくなりますが、perl の初期化処理を高速化することができます。 |
| -U | ディレクトリ削除など危険とされている機能を有効化します。 |
| -v | perl のバージョン情報を表示します。 |
| -V | perl の詳しいバージョン情報を表示します。 |
| -w | 未使用変数、未初期化変数の参照などの警告を表示します。 |
| -xdir | #! で始まって perl という文字を含む行までをコメントとして読み飛ばします。ディレクトリ dir を指定した場合は、そのディレクトリに移動してから処理を行います。 |
■ 型のいろいろ
| 型記号 | 型名 | 例 | 説明 |
|---|---|---|---|
| $名前 | SCALAR | $name | スカラー。ひとつの数値や文字列。 |
| @名前 | ARRAY | @names | 配列。リスト。数値をキーとしたスカラー値の集合。 |
| %名前 | HASH | %data | 連想配列。ハッシュ。文字列をキーとしたスカラー値の集合。 |
| &名前 | CODE | &func | サブルーチン。Perl 5 では & を省略可能。 |
| 名前 | IN | ファイルハンドル。ディレクトリハンドル。 | |
| *名前 | GLOB | *data | 型グロブ。$名前、@名前、%名前、&名前、名前などの総称のようなもの。 |
| \$名前 | REF | \$name | 参照。他にも \@、\%、\& などもあり。 |
■ 予約済みファイルハンドル
| ハンドル | 説明 |
|---|---|
| STDIN | 標準入力。通常はキーボード。CGIの場合はブラウザ。 |
| STDOUT | 標準出力。通常はコンソール。CGIの場合はブラウザ。 |
| STDERR | 標準エラー出力。通常はコンソール。CGIの場合は無視される。 |
| DATA | スクリプトの末尾にある __END__ 以降のデータを読みだす。 |
| ARGV | 引数で指定したファイルからの入力。<ARGV> は <> と同じ。 |
■ 特殊変数($...)
◆ 正規表現関連
| 特殊変数 | 説明 |
|---|---|
| $& | パターンマッチにマッチした部分文字列。 |
| $` | パターンマッチにマッチした部分の前側の文字列。 |
| $' | パターンマッチにマッチした部分の後側の文字列。 |
| $+ | パターンマッチの最後の()に対応する文字列。 |
| $* | 1を代入すると /.../ が /.../m として実行される。 |
| $1 $2 $3... | パターンマッチの際の 1、2、3...番目の ( ) に対応する文字列。 |
◆ 入出力関連
| 特殊変数 | 説明 |
|---|---|
| $| | 0以外が代入されると出力をバッファリングしなくなる。 |
| $. | ファイルから読み込み時の現在の行数。 |
| $/ | 入力時のレコード区切り文字。通常は改行。 |
| $, | 出力時の項目区切り文字。print @xx; の時に有効。 |
| $\ | 出力時の行末文字。print "$xx"; の後ろに付加される。 |
| $" | 出力時の項目区切り文字。print "@xx"; の時に有効。 |
◆ フォーマット関連
| 特殊変数 | 説明 |
|---|---|
| $# | print で数値を表示する際のフォーマット。 |
| $% | write 使用時の現在のページ番号。 |
| $= | write 使用時の現在のライン数。 |
| $- | write 使用時の残り行数。 |
| $~ | write 使用時のフォーマット名(デフォルトはハンドル名と同じ)。 |
| $^ | write 使用時のヘッダフォーマット名。 |
| $^L | write 使用時のフッタ。省略時は "\f"。 |
| $: | write の ^ で改行が可能な文字。省略時は " \n-"。 |
| $^A | format のアキュムレータの値。 |
◆ エラー・デバッグ関連
| 特殊変数 | 説明 |
|---|---|
| $? | 最後に実行されたコマンドのステータス。 |
| $! | 最後に実行されたシステムコールのエラー情報。 |
| $@ | 最後に実行されたevalのエラーメッセージ。 |
| $^D | デバッグフラグの値。 |
| $^P | デバッガが使用する内部フラグ。 |
| $^W | 警告スイッチの現在値。 |
◆ UNIX関連
| 特殊変数 | 説明 |
|---|---|
| $$ | プロセスID。(UNIX) |
| $< | このプロセスの実ユーザーID。(UNIX) |
| $> | このプロセスの実効ユーザーID。(UNIX) |
| $( | このプロセスの実グループID。(UNIX) |
| $) | このプロセスの実効グループID。(UNIX) |
◆ その他
| 特殊変数 | 説明 |
|---|---|
| $_ | 省略時の変数。 |
| $[ | 配列の最初の添え字。通常は0。 |
| $; | 高次元連想配列の添え字の区切り文字。 |
| $0 | スクリプトのコマンド名。 |
| $^T | スクリプトの実行時刻。 |
| $^X | perl のパス情報。 |
| $] | perl のバージョン情報。 |
| $^O | perl の OS 情報。 |
| $^F | システムファイルディスクリプタの最大値。 |
| $^H | プラグマモジュールの内部的な値。 |
| $^I | -i オプションで指定した拡張子の名前。 |
■ 特殊変数
| 特殊変数 | 説明 |
|---|---|
| @ARGV | コマンドライン引数。 |
| $ARGV | <ARGV> から読み込み中のファイル名。 |
| @INC | perlライブラリ検索ディレクトリ。 |
| @F | 入力データの配列。(-a オプション指定時) |
| %INC | 読み込まれたライブラリファイルの配列。 |
| %ENV | 環境変数一覧。 |
| %SIG | シグナル。 |
■ 特殊トークン
| 特殊トークン | 説明 |
|---|---|
| __FILE__ | スクリプトのファイル名。 |
| __LINE__ | スクリプト上の現在の行番号。 |
| __PACKAGE__ | パッケージ名。 |
| __END__ | スクリプトの終わりを示す。__END__ 以降のデータは特殊ファイルハンドル DATA で読み出せる。 |
| __DATA__ | __END__ と同様。ファイルハンドル パッケージ名::DATA で読み出せる。 |
■ 正規表現一覧
| 正規表現 | 意味 |
|---|---|
| A | 文字 A |
| ^A | 先頭が A |
| A$ | 末尾が A |
| [ABC] | A か B か C |
| [A-Z] | A~Z のいずれか |
| A* | 0 文字以上の A |
| A+ | 1 文字以上の A |
| A? | 0 文字か 1 文字の A |
| A{2} | 2 文字の A |
| A{2,} | 2 文字以上の A |
| A{2,5} | 2 文字以上 5 文字以下の A |
| . | 改行以外の任意の 1 文字 |
| (ABC|DEC) | ABC または DEF |
| \t | タブ文字(TAB) |
| \n | 改行文字(LF) |
| \r | 復帰文字(CR) |
| \f | フォームフィード(FF) |
| \a | アラーム(BEL) |
| \e | エスケープ(ESC) |
| \c[ | コントロール文字 |
| \L | \E までを小文字にする |
| \U | \E までを大文字にする |
| \Q | \E までを正規表現ではなくそのままの文字として解釈する |
| \E | \L、\U、\Q の効果を終了させる |
| \w | アンダーバー(_)を含む英数文字からなる単語。[_0-9a-zA-Z]+ と同じ。 |
| \W | 単語以外の文字。[^_0-9a-zA-Z] と同じ。 |
| \s | スペースや改行。[ \t\r\n\f] と同じ。 |
| \S | タブ、スペース以外の文字。[^ \t\r\n\f] と同じ。 |
| \d | 0~9 の数値。[0-9] と同じ。 |
| \D | 0~9 以外の文字。[^0-9] と同じ。 |
■ ワイルドカードの書式
| ワイルド カード | 意味 |
|---|---|
| * | 0 文字以上の任意文字。a* は a, abc, a123 などにマッチする。 |
| ? | 1 文字の任意文字。a??? は axyz a123 accc などにマッチする。 |
■ マッチングのオプション
| オプション | 説明 |
|---|---|
| /.../g s/.../.../g | 連続してマッチングを行う。 |
| /.../i s/.../.../i | 大文字と小文字を区別しない。 |
| /.../m s/.../.../m | 文字列を複数の行として扱う。 |
| /.../s s/.../.../s | 文字列を1行として扱う。 |
| /.../o s/.../.../o | 正規表現を最初の1回だけコンパイルする。 |
| /.../x s/.../.../x | 拡張形式の正規表現を用いる |
| s/.../.../e | 後者をperl文として実行する。 |
■ printf のフォーマット一覧
| 特殊文字 | 表示例 | 説明 | |
|---|---|---|---|
| 文 字 列 | printf("|%s|", "ABC") | |ABC| | 文字列(string) |
| printf("|%5s|", "ABC") | | ABC| | 右詰め文字列 | |
| printf("|%-5s|", "ABC") | |ABC | | 左詰め文字列 | |
| printf("|%3s|", "ABCDEF") | |ABCDEF| | 文字列の方が長い場合 | |
| printf("|%.3s|", "ABCDEF") | |ABC| | 強制的に3文字のみ表示 | |
| printf("%c", 0x41) | A | 文字コード(character) | |
| 10 進 数 | printf("|%d|", 26) | |26| | 10進整数(decimal) |
| printf("|%5d|", 26) | | 26| | 右詰め5桁整数 | |
| printf("|%-5d|", 26) | |26 | | 左詰め5桁整数 | |
| printf("|%+d|", 26) | |+26| | プラス記号付き整数 | |
| printf("|%05d|", 26) | |00026| | 0埋め5桁整数 | |
| printf("%d", 0xffffffff) | -1 | 符号付整数 | |
| printf("%u", 0xffffffff) | 4294967295 | 符号無し整数(unsigned) | |
| 16 進 数 | printf("%x", 255) | ff | 16進数(hexadecimal) |
| printf("%X", 255) | FF | 大文字16進数 | |
| printf("%#x", 255) | 0xff | 0x付き16進数 | |
| printf("%04x", 255) | 00ff | 0埋め4桁16進数 | |
| n 進 数 | printf("%o", 511) | 777 | 8進数(octal) |
| printf("%#o", 511) | 0777 | 0付き8進数 | |
| printf("%b", 255) | 11111111 | 2進数(binary) | |
| 小 数 | printf("|%f|", 3.45) | |3.45| | 小数(float) |
| printf("|%5.1f|", 3.45) | | 3.5| | 5文字分、小数第1位まで表示 | |
| printf("%e", 3.45) | 3.450000e+000 | 科学計算的数値表現 | |
| printf("%E", 3.45) | 3.450000E+000 | Eが大文字 | |
| printf("%g", 3.45) | 桁数に応じて %f と %e を自動選択 | ||
| % | printf("%%") | % | パーセント(%) |
■ エスケープシーケンス一覧
| 特殊文字 | 意味 |
|---|---|
| \t | タブ文字(\x09) |
| \n | 改行(\x0a) |
| \r | リターン(\x0d) |
| \f | フォームフィード(\x0c) |
| \b | バックスペース(\x08) |
| \a | アラーム(\x07) |
| \e | エスケープ文字(\x1b) |
| \033 | 文字コード(8進数) |
| \x1b | 文字コード(16進数) |
| \c[ | コントロール文字 |
| \l | 次の1文字を小文字にする |
| \u | 次の1文字を大文字にする |
| \L | \E までの文字列を小文字にする |
| \U | \E までの文字列を大文字にする |
| \Q | \E までのメタ文字を無効にする |
| \E | \L や \U や \Q を終了させる |
| \その他 | その他の文字。例えば \" は " を表す |
■ クォート演算子
| 通常の表記 | 汎用表記 | 説明 |
|---|---|---|
| '...' | q/.../ | シングルクォートによる文字列。 |
| "..." | qq/.../ | ダブルクォートによる文字列。 |
| `...` | qx/.../ | バッククォートによるコマンド実行。 |
| ("A", "B", "C") | qw(A B C) | 配列。" や , が無くなる点に注意。 |
| /.../ | m/.../ | パターンマッチ。 |
| s/.../.../ | s/.../.../ | 置換。 |
| y/.../.../ | tr/.../.../ | 置換。 |
■ 主なシグナル一覧
シグナルの実装状況は、OS によって異なる場合があります。下記では、Linux におけるシグナルの主な一覧を示します。
| シグナル | 数値 | 説明 |
|---|---|---|
| SIGHUP | 1 | ハングアップ(hungup)。 |
| SIGINT | 2 | 割りこみ(interrupt)。 |
| SIGQUIT | 3 | 中止(quit)。 |
| SIGKILL | 9 | 無視できない強制終了命令(kill)。 |
| SIGPIPE | 13 | パイプの切断通知(kill)。 |
| SIGALRM | 14 | アラーム通知(alarm)。 |
| SIGTERM | 15 | 終了(terminate)。 |
| SIGUSR1 | 16 | ユーザ定義1(user 1)。 |
| SIGUSR2 | 17 | ユーザ定義2(user 2)。 |
| SIGCHLD | 18 | 子プロセス終了(child)。 |
| SIGSTOP | 23 | 一時停止(stop)。 |
| SIGCONT | 25 | 再開(continue)。 |
■ ASCIIコード一覧
| 上位4ビット | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
| 下 位 4 ビ ッ ト | 0 | NUL | DLE | SP | 0 | @ | P | ` | p |
| 1 | SOH | DC1 | ! | 1 | A | Q | a | q | |
| 2 | STX | DC2 | " | 2 | B | R | b | r | |
| 3 | ETX | DC3 | # | 3 | C | S | c | s | |
| 4 | EOT | DC4 | $ | 4 | D | T | d | t | |
| 5 | ENQ | NAK | % | 5 | E | U | e | u | |
| 6 | ACK | SYN | & | 6 | F | V | f | v | |
| 7 | BEL(\a) | ETB | ' | 7 | G | W | g | w | |
| 8 | BS(\b) | CAN | ( | 8 | H | X | h | x | |
| 9 | TAB(\t) | EM | ) | 9 | I | Y | i | y | |
| A | LF(\r) | SUB | * | : | J | Z | j | z | |
| B | VT | ESC(\e) | + | ; | K | [ | k | { | |
| C | NP(\f) | FS | , | < | L | \ | l | | | |
| D | CR(\n) | GS | - | = | M | ] | m | } | |
| E | SO | RS | . | > | N | ^ | n | ~ | |
| F | SI | US | / | ? | O | _ | o | DEL | |
■ CGIで参照可能な環境変数一覧
| 環境変数 | 説明 |
|---|---|
| AUTH_TYPE | 認証タイプ。 例:Basic |
| CONTENT_LENGTH | ブラウザから送信されたコンテンツの長さ。 例:968 |
| CONTENT_TYPE | ブラウザから送信されたコンテンツのタイプ。 例:application/x-www-form-urlencode |
| DOCUMENT_ROOT | ドキュメントのルートフォルダ。仮想パス / に対応するサーバー上の実パス名。 例:/home/www |
| GATEWAY_INTERFACE | CGI のバージョン。 例:CGI/1.1 |
| HTTP_ACCEPT | ブラウザが受信可能な MIME タイプ。 例:*/* |
| HTTP_ACCEPT_ENCODING | ブラウザが受信可能なエンコードタイプ。 例:gzip, deflate |
| HTTP_ACCEPT_LANGUAGE | ブラウザが受信可能な言語タイプ。 例:ja |
| HTTP_CACHE_CONTROL | キャッシュ制御に関する情報。 例:max-age=259200 |
| HTTP_CONNECTION | HTTP の接続に関する情報。 例:keep-alive |
| HTTP_FORWARDED | この要求をフォワードしたプロキシサーバーの情報。 例:by proxy.xxx.zzz |
| HTTP_HOST | サーバーのホスト名。 例:www.xxx.zzz |
| HTTP_PRAGMA | 実装依存の値。 例:no-cache |
| HTTP_REFERER | このページにリンクしていたページの URL。 例:http://www.xxx.zzz/index.htm |
| HTTP_USER_AGENT | ブラウザに関する情報 例:Mozilla/4.01 [ja] (Win95; I) |
| HTTP_X_FORWARDED_FOR | この要求をフォワードしたプロキシサーバーのIPアドレス。 例:192.168.0.2 |
| PATH | コマンドを実行する際のサーチパスの一覧。 例:/bin:/sbin:/usr/bin:/usr/sbin |
| PATH_INFO | CGI の URL の末尾に付加されたパス情報。例えば、test.cgi/download.zip という形式で呼ばれた場合は、/download.cgi となる。 例:/download.zip |
| 環境変数 | 説明 |
|---|---|
| PATH_TRANSLATED | PATH_INFO に指定されたファイルのサーバー上の実パス名。 例:/home/www/download.zip |
| QUERY_STRING | GETメソッドで渡されたフォームパラメータ。URL の ? 以降に付加されたデータ。 例:NAME=foo&PASSWD=hi.mi.tu |
| REMOTE_ADDR | ブラウザ側のアドレス。 例:192.168.0.65 |
| REMOTE_PORT | ブラウザ側のポート番号。 例:1094 |
| REMOTE_IDENT | ブラウザ側のユーザID。 例:5012 |
| REMOTE_USER | ブラウザ側のユーザ名。BASIC認証などが行われている際に有効。 例:tanaka |
| REQUEST_METHOD | 取得モード。GET や POST など。 例:GET |
| REQUEST_URI | 要求されたURL(URI)。 例:/test.cgi |
| SCRIPT_FILENAME | スクリプトの実パス上のファイル名。 例:/home/www/test.cgi |
| SCRIPT_NAME | スクリプト名。 例:/test.cgi |
| SERVER_ADDR | サーバーのアドレス。 例:192.168.0.1 |
| SERVER_ADMIN | サーバー管理者情報。 例:webmaster@www.xxx.zzz |
| SERVER_NAME | サーバー名。 例:www.xxx.zzz |
| SERVER_PORT | サーバー側のポート番号。 例:80 |
| SERVER_PROTOCOL | プロトコルバージョン。 例:HTTP/1.0 |
| SERVER_SIGNATURE | サーバーのシグネチャ。 例:Apache/1.3.9 Server at www.xxx.zzz Port 80 |
| SERVER_SOFTWARE | サーバーのソフトウェア。 例:Apache/1.3.9 (Unix) |
Copyright (C) 2002 杜甫々