付録2

■ Perlのコマンドオプション

オプション説明
-0xxx入力レコードの区切り文字($/)を8進数で指定します。
-aオートスプリットモード。-n または -p と組み合わせた場合、入力をスペースで自動的に区切って、予約変数 @F に代入します。
-cスクリプトの構文チェックのみを行い、実行せずに終わります。
-dperl をデバッグモードで起動します。
-Dnumberデバッグフラグ。このフラグを使用するには、perl がデバッグモードでコンパイルされている必要があります。
-e scriptscript を perl のスクリプトとして実行します。例えば、「perl -e "print 5 * 3"」 は 5 * 3 の結果 15 を表示します。
-iextperl -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 として残します。
-IdirC言語プリプロセッサがヘッダファイルを探すディレクトリ(省略時は /usr/include と /usr/lib/perl)を指定します。(→ -P)
-loct8進数 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ディレクトリ削除など危険とされている機能を有効化します。
-vperl のバージョン情報を表示します。
-Vperl の詳しいバージョン情報を表示します。
-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 使用時のヘッダフォーマット名。
$^Lwrite 使用時のフッタ。省略時は "\f"。
$:write の ^ で改行が可能な文字。省略時は " \n-"。
$^Aformat のアキュムレータの値。
◆ エラー・デバッグ関連
特殊変数説明
$?最後に実行されたコマンドのステータス。
$!最後に実行されたシステムコールのエラー情報。
$@最後に実行されたevalのエラーメッセージ。
$^Dデバッグフラグの値。
$^Pデバッガが使用する内部フラグ。
$^W警告スイッチの現在値。
◆ UNIX関連
特殊変数説明
$$プロセスID。(UNIX)
$<このプロセスの実ユーザーID。(UNIX)
$>このプロセスの実効ユーザーID。(UNIX)
$(このプロセスの実グループID。(UNIX)
$)このプロセスの実効グループID。(UNIX)
◆ その他
特殊変数説明
$_省略時の変数。
$[配列の最初の添え字。通常は0。
$;高次元連想配列の添え字の区切り文字。
$0スクリプトのコマンド名。
$^Tスクリプトの実行時刻。
$^Xperl のパス情報。
$]perl のバージョン情報。
$^Operl の OS 情報。
$^Fシステムファイルディスクリプタの最大値。
$^Hプラグマモジュールの内部的な値。
$^I-i オプションで指定した拡張子の名前。

■ 特殊変数

特殊変数説明
@ARGVコマンドライン引数。
$ARGV<ARGV> から読み込み中のファイル名。
@INCperlライブラリ検索ディレクトリ。
@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] と同じ。
\d0~9 の数値。[0-9] と同じ。
\D0~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)ff16進数(hexadecimal)
printf("%X", 255)FF大文字16進数
printf("%#x", 255)0xff0x付き16進数
printf("%04x", 255)00ff0埋め4桁16進数
n


printf("%o", 511)7778進数(octal)
printf("%#o", 511)07770付き8進数
printf("%b", 255)111111112進数(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+000Eが大文字
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 におけるシグナルの主な一覧を示します。

シグナル数値説明
SIGHUP1ハングアップ(hungup)。
SIGINT2割りこみ(interrupt)。
SIGQUIT3中止(quit)。
SIGKILL9無視できない強制終了命令(kill)。
SIGPIPE13パイプの切断通知(kill)。
SIGALRM14アラーム通知(alarm)。
SIGTERM15終了(terminate)。
SIGUSR116ユーザ定義1(user 1)。
SIGUSR217ユーザ定義2(user 2)。
SIGCHLD18子プロセス終了(child)。
SIGSTOP23一時停止(stop)。
SIGCONT25再開(continue)。

■ ASCIIコード一覧


上位4ビット
01234567





0NULDLESP0@P`p
1SOHDC1!1AQaq
2STXDC2"2BRbr
3ETXDC3#3CScs
4EOTDC4$4DTdt
5ENQNAK%5EUeu
6ACKSYN&6FVfv
7BEL(\a)ETB'7GWgw
8BS(\b)CAN(8HXhx
9TAB(\t)EM)9IYiy
ALF(\r)SUB*:JZjz
BVTESC(\e)+;K[k{
CNP(\f)FS,<L\l|
DCR(\n)GS-=M]m}
ESORS.>N^n~
FSIUS/?O_oDEL

■ CGIで参照可能な環境変数一覧

環境変数説明
AUTH_TYPE認証タイプ。
例:Basic
CONTENT_LENGTHブラウザから送信されたコンテンツの長さ。
例:968
CONTENT_TYPEブラウザから送信されたコンテンツのタイプ。
例:application/x-www-form-urlencode
DOCUMENT_ROOTドキュメントのルートフォルダ。仮想パス / に対応するサーバー上の実パス名。
例:/home/www
GATEWAY_INTERFACECGI のバージョン。
例:CGI/1.1
HTTP_ACCEPTブラウザが受信可能な MIME タイプ。
例:*/*
HTTP_ACCEPT_ENCODINGブラウザが受信可能なエンコードタイプ。
例:gzip, deflate
HTTP_ACCEPT_LANGUAGEブラウザが受信可能な言語タイプ。
例:ja
HTTP_CACHE_CONTROLキャッシュ制御に関する情報。
例:max-age=259200
HTTP_CONNECTIONHTTP の接続に関する情報。
例: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_INFOCGI の URL の末尾に付加されたパス情報。例えば、test.cgi/download.zip という形式で呼ばれた場合は、/download.cgi となる。
例:/download.zip
環境変数説明
PATH_TRANSLATEDPATH_INFO に指定されたファイルのサーバー上の実パス名。
例:/home/www/download.zip
QUERY_STRINGGETメソッドで渡されたフォームパラメータ。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 杜甫々