Smart -Web Magazine

WEB開発者に嬉しいステキ講座

MENU

CGIモジュール

2009年7月6日 コメントの追加

概要

CGI.pmは、簡単にHTMLページを生成し、その内容を解析するためのPerl標準ライブラリです。

このライブラリのメソッドを使って、フォームから送信されたデータをチェックしたり、その値を使ってフォームを作成するといったようなことが出来ます。また、ファイルのアップロード、スタイルシート、サーバ・プッシュなどを実現する機能も用意されています。

CGI.pmはオブジェクト指向と、メソッド指向のプログラミング・スタイルがあります。このドキュメントでは、オブジェクト指向スタイルを使って説明していきます。

以下は、CGI.pmを使って、簡単なHTMLページを出力する例です。

# CGI.pmの読み込み
use CGI;
# 新しいCGIオブジェクトの作成
$obj = new CGI;
print $obj->header,                        # HTTPヘッダの作成
$obj->start_html('hello world'), "\n", # HTMLの開始
"hello world\n",                          # ボディ部分の出力
$obj->end_html;                        # HTMLの終わり

出力結果は以下のとおりです。

Content-Type: text/html; charset=ISO-8859-1

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"><head><
title>hello world</title>
</head><body>
<h1>hello world</h1>
</body></html>

ブラウザでは、単純に次のように表示されます。

hello world


CGI.pmの使い方

CGI.pmの読み込み

はじめに、useを使って、CGI.pmを呼び出します。

use CGI;

次に、オブジェクトを作成します。

$obj = new CGI;

ここで作成したオブジェクト(上記では$obj)は、メソッド(関数)を呼ぶ際に使うことになります。詳細は後述をご覧ください。

メソッドの呼び出し方

オブジェクト指向でのメソッドの呼び出しは、newで作成したオブジェクトを使って、下記のように行います。

$obj->header();

CGI.pmに用意されたメソッドは、さまざまな引数を受け取ります。 このインターフェースを簡単にするため、すべてのメソッドは以下のような名前付き引数呼び出しスタイルを使います。

print $obj->header(-type=>'image/gif', -expires=>'+3d');

各引数の名前の前には、ハイフン( - )をつけます。実際は、最初の引数につけておけば、それ以降に続く引数はハイフン( - )を省略することができます。引数リストでは、大文字・小文字の区別がないので、-type-Type-TYPEは同様の意味となります。また、どの順番に引数を指定しても、問題ありません。

名前付き引数の値には、必要であればスカラ以外にも、配列へのリファレンス、ハッシュへのリファレンスを指定できます。

例えば、paramメソッドは、ひとつの値と、複数の値を指定することができます。

$obj->param(-name=>'nickname',-value=>'gaki');
$obj->param(
  -name=>'nickname',
  -value=>['gaki','warumono','akuma','kenzo']
);

1つの引数だけを受け取るメソッドの場合、引数名なしに1つの引数を与えることが出来ます。

print $obj->header('text/html');

未定義のメソッド

CGI.pmには、定義していないメソッドを、必要に応じて自動的に生成する機能があります。

HTMLタグは、属性と内容を持ちます。たとえば、H1の属性としてalign=centerを指定し、内容として"table of contents"を指定する場合、以下のように表記します。

<h1 align=center>table of contents</h1>

CGI.pmで同様の出力を得るには、HTML属性をハッシュ・リファレンスで最初の引数、内容があればその後の引数として渡します。

h1({-align=>center}, 'table of contents');

属性を指定しない場合、内容を指定しない場合の表記の仕方と、その出力結果は以下のようになります。

コード 出力結果
h1() <H1>
h1('Level1', 'Header'); <H1>Level 1 Header</H1>
h1({-align=>left}); <H1 ALIGN="LEFT">
h1({-align=>left}, 'Header'); <H1 ALIGN="LEFT">Header</H1>

開始タグと終了タグを出力するための詳細

HTMLタグを生成するメソッドのほとんどは、自動的に開始タグと終了タグを自動的に作成します。

print h1('Level 1 Header');

上記コマンドの出力は以下のようになります。

<H1>Level 1 Header</H1>

開始タグと終了タグを任意に出力したいような場合は、以下のようにstart_タグ名end_タグ名の形式を使うことができます。

print start_h1, 'Level 1 Header', end_h1;

いくつかの例外を除いて、start_タグ名end_タグ名メソッドはuse CGIしたときに自動的に作成されません。 以下のように、名前の前にアスタリスクを置くか、あるいは代わりにstart_タグ名またはend_タグ名を 指定する必要があります。

use CGI qw/:standard *table start_ul/;

上記では、start_tableend_tablestart_ulend_ulメソッドを作成します。


HTTPヘッダの出力機能

標準HTTPヘッダの出力

CGIHTMLページを出力する際には、最初に標準HTTPヘッダを出力します。

headerメソッドを使って簡単に出力することができます。

print $obj->header;

出力結果は以下のとおりです。

Content-Type: text/html

名前付引数を使って、Content-Typecharsetexpiresなど さまざまな属性を指定することができます。理解されるパラメータは-type-status-expires-cookieで、他の名前がついたパラメータはすべて、最初のハイフンを落とされて、ヘッダ・フィールドに変えられます

print $obj->header(
  -type=>'image/gif',
  -nph=>1,
  -status=>'402 Payment required',
  -expires=>'+1d',
  -cookie=>$cookie,
  -charset=>'utf-7',
  -attachment=>'foo.gif',
);

出力結果は以下のとおりです。

HTTP/1.0 402 Payment required
Status: 402 Payment required
Set-Cookie: 
Expires: Tue, 06 Mar 2001 09:26:31 GMT
Date: Sat, 03 Mar 2001 09:26:31 GMT
Attachment: foo.gif
Charset: utf-7
Content-Type: image/gif

HTMLドキュメントの出力機能

<HTML><HEAD><TITLE><BODY>タグの出力

start_htmlメソッドは、<HTML><HEAD><TITLE><BODY>タグを出力します。

なにも引数を指定しない場合は、下記のように<TITLE>タグや<BODY>タグはデフォルトの状態で出力されます。

print $obj->start_html;

出力結果は以下のとおりです。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML><HEAD><TITLE>Untitled Document</TITLE>
</HEAD><BODY>

引数に指定した場合です。

print $obj->start_html(-title=>'----', -BGCOLOR=>'#FFFFFF');

出力結果は以下のとおりで、<TITLE>タグとBGCOLOR属性に指定した値が挿入されています。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML><HEAD><TITLE>----</TITLE>
</HEAD><BODY BGCOLOR="#FFFFFF">

</BODY></HTML>タグの出力

end_htmlメソッドは、</BODY></HTML>タグを出力します。

print $obj->end_html;

出力結果は以下のとおりです。

</BODY></HTML>

基本HTMLタグの出力

CGI.pmは、メソッド名がそのまま出力するタグ名となっています。たとえば、<H1>タグを出力するには、h1メソッドを呼び出します。

print $obj->h1();

このような命名規則があるので、HTMLタグを出力したい際に、直感的にどのメソッドを呼び出せばよいかがわかると思います。メソッドの呼び出し同様、HTMLタグの属性と内容の指定も簡単です。HTML属性をハッシュ・リファレンスで最初の引数、内容があればその後の引数として渡します。

たとえば、H1の属性としてalign=centerを指定し、内容として"table of contents"を指定する場合、以下のように引数を渡します。

h1({-align=>center}, 'table of contents');

この出力は下記のとおりです。

<h1 align=center>table of contents</h1>

HTMLタグのネスティング

タグでタグを挟んだ状態をネスティングといいます。

<UL>
<LI>リスト1</LI>
<LI>リスト2</LI>
</UL>

CGI.pmでネスティングを実現するには、次のようにメソッドの引数に、ネスティングしたいメソッドを指定します。

print $obj->ul(
  $obj->li('リスト1'),
  $obj->li('リスト1')
);

フォームタグの出力機能

start_form  フォームの開始と終了

<FORM>タグの開始タグと終了タグは、start_formend_formメソッドを使います。

print $obj->start_form(
  -method=>$method,
  -action=>$action,
  -enctype=>$encoding
);
... フォームの内容出力 ...
print $obj->end_form;

start_formメソッドは<FORM>タグを返します。引数を指定しない場合の<FORM>タグ属性は下記のとおりです。

属性名称 属性の値
method POST
action 呼び出し元スクリプト名
enctype application/x-www-form-urlencoded

end_form</FORM>タグを返します。

start_formには、JavaScript用に、-name-onSubmitパラメータが提供されています。-nameパラメータ にはフォームの名前、-onSubmitにはJavaScript構文を指定できます。

textfield  テキスト・フィールドの作成

テキスト入力フィールドの出力はtextfieldメソッドを使います。

print $obj->textfield(
  -name=>'フィールド名',
  -default=>'初期値',
  -size=>50,
  -maxlength=>80
);

出力結果は下記のとおりです。

<input type="text" name="フィールド名" value="初期値" size="50" maxlength=
"80" />

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->textfield('フィールド名','初期値',50,80);

textfieldのパラメータは以下のとおりです。

引数名 内容
-name フィールド名(必須)
-default フィールド内容の初期値
-size 文字数によるフィールドの大きさ
-maxlength 最大文字数

上記のほか、JavaScript用に、-onChange-onFocus-onBlur-onMouseOver-onMouseOut-onSelectパラメータが利用可能です。

フォームが処理されたとき、テキスト・フィールドの値は以下のように取り出すことが出来ます。

$value = $obj->param('foo');

そのほかのフィールド要素

textarea -複数行テキスト入力フィールドの作成

print $obj->textarea(
  -name=>'フィールド名',
  -default=>'初期値',
  -rows=>10,
  -columns=>50
);

出力結果は下記のとおりです。

<textarea name="フィールド名" rows="10" cols="50">初期値</textarea>

password_field -パスワード・フィールドの作成

print $obj->password_field(
  -name=>'フィールド名',
  -value=>'初期値',
  -size=>50,
  -maxlength=>80
);

出力結果は下記のとおりです。

<input type="password" name="フィールド名" value="初期値" size="50" maxlen
gth="80" />

filefield -ファイル・アップロード・フィールドの作成

print $obj->filefield(
  -name=>'フィールド名',
  -default=>'初期値',
  -size=>50,
  -maxlength=>80
);

出力結果は下記のとおりです。

<input type="file" name="フィールド名" value="初期値" size="50" maxlength=
"80" />

paramを呼ぶことによって、アップロードされたファイル名を取得することが出来ます。

$fh = $obj->param('フィールド名');

上記でparamが返す値は、ファイル・ハンドルでもあるので、そのまま読み込むことが可能です。

# テキストファイルを読み込み、出力
while (<$fh>) {
  print;
}

uploadメソッドで取得するほうがより安全です。

$fh = $obj->upload('フィールド名');
while (<$fh>) {
  print;
}

popup_menu -ポップアップ・メニューの作成

print $obj->popup_menu(
  -name=>'フィールド名',
  -values=>['eenie','meenie','minie'],
  -default=>'meenie',
  -labels=>\%labels);

出力結果は下記のとおりです。

<select name="フィールド名">
<option value="eenie">eenie</option>
<option selected="selected" value="meenie">meenie</option>
<option value="minie">minie</option>
</select>

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->popup_menu(
  'フィールド名',
  ['eenie','meenie','minie'],
  'meenie',\%labels);

popup_menuのパラメータは以下のとおりです。

引数名 内容
-name フィールド名(必須)
-value メニュー要素(必須)
-default デフォルトで選択されるメニュー要素名
-labels ラベル

scrolling_list  -スクローリング・リストの作成

print $obj->scrolling_list(
  -name=>'フィールド名',
  -values=>['eenie','meenie','minie','moe'],
  -default=>['eenie','moe'],
  -size=>5,
  -multiple=>'true',
  -labels=>\%labels);

出力結果は下記のとおりです。

<select name="フィールド名" size="5" multiple="multiple">
<option selected="selected" value="eenie">eenie</option>
<option value="meenie">meenie</option>
<option value="minie">minie</option>
<option selected="selected" value="moe">moe</option>
</select>

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->scrolling_list(
  'フィールド名',
  ['eenie','meenie','minie','moe'],
  ['eenie','moe'],5,'true',
  \%labels);

scrolling_listのパラメータは以下のとおりです。

引数名 内容
-name フィールド名(必須)
-values メニュー要素(必須)
-default デフォルトで選択される値、もしくはその値が入ったリストへのリファレンス
-size リストの大きさ
-multiple 複数の選択を許可する場合は値にtrueを指定する
-labels ラベル

checkbox_group  -チェックボックスのグループの作成

print $obj->checkbox_group(
  -name=>'グループ名',
  -values=>['eenie','meenie','minie','moe'],
  -default=>['eenie','moe'],
  -linebreak=>'true',
  -labels=>\%labels);

出力結果は下記のとおりです。

<input type="checkbox" name="グループ名" value="eenie" checked="checked" />eenie<br />
<input type="checkbox" name="グループ名" value="meenie" />meenie<br />
<input type="checkbox" name="グループ名" value="minie" />minie<br/>
<input type="checkbox" name="グループ名" value="moe" checked="checked" />moe<br />

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->checkbox_group(
'グループ名',
['eenie','meenie','minie','moe'],
['eenie','moe'],'true',\%labels);

checkbox_groupのパラメータは以下のとおりです。

引数名 内容
-name フィールド名(必須)
-values フィールドの値
-default デフォルトで選択される値、もしくはその値が入ったリストへのリファレンス
-linebreak 改行
値をtrueに設定するとチェックボックスの間に改行が入ります。
-labels ラベル

checkbox  -チェックボックスの作成

print $obj->checkbox(
  -name=>'フィールド名',
  -checked=>'checked',
  -value=>'ON',
  -label=>'CLICK ME');

出力結果は下記のとおりです。

<input type="checkbox" name="フィールド名" value="ON" checked="checked" />CLICK ME

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->checkbox('checkbox_name','checked','ON','CLICK ME');

checkboxのパラメータは以下のとおりです。

引数名 内容
-name フィールド名(必須)
-checked フィールドの状態
チェックボックスの状態をONにするには、値にcheckedを指定します。
-value フィールドの値
-label ラベル

radio_group  -ラジオボタン・グループの作成

print $obj->radio_group(
  -name=>'グループ名',
  -values=>['eenie','meenie','minie'],
  -default=>'meenie',
  -linebreak=>'true',
  -labels=>\%labels);

出力結果は下記のとおりです。

<input type="radio" name="グループ名" value="eenie" />eenie<br />
<input type="radio" name="グループ名" value="meenie" checked="checked" />meenie<br/>
<input type="radio" name="グループ名" value="minie" />minie<br />

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->radio_group(
  'グループ名',
  ['eenie','meenie','minie'],
  'meenie','true',\%labels);

radio_groupのパラメータは以下のとおりです。

引数名 内容
-name フィールド名(必須)
-values メニュー要素(必須)
-default ONの状態にするラジオボタンの要素を指定可能
-linebreak 値をtrueに設定するとチェックボックスの間に改行が入ります。
-labels ラベル

submit  サブミット・ボタンの作成

print $obj->submit(
  -name=>'フィールド名',
  -value=>'value');

出力結果は下記のとおりです。

<input type="submit" name="フィールド名" value="value" />

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->submit('フィールド名','value');

submitのパラメータは以下のとおりです。

引数名 内容
-name ボタン上に表示されるラベル
-value 問い合わせ文字列でスクリプトに渡される値

reset  -リセット・ボタンの作成

print $obj->reset;

出力結果は下記のとおりです。

<input type="reset" />

defaults  -デフォルト・ボタンの作成

print $obj->defaults('ラベル');

出力結果は下記のとおりです。

<input type="submit" name=".defaults" value="ラベル" />

hidden  -ヒドゥン・フィールドの作成

print $obj->hidden(
  -name=>'フィールド名',
  -default=>['value1','value2']);

出力結果は下記のとおりです。

<input type="hidden" name="フィールド名" value="value1" /><input type="hidden" name="フィールド名" value="value2" />

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->hidden('フィールド名','value1','value2');

hiddenのパラメータは以下のとおりです。

引数名 内容
-name フィールド名(必須)
-default フィールドの値
1つの値、もしくはリストへのリファレンスを指定可能

 image_button  -クリッカブル・イメージ・ボタンの作成

print $obj->image_button(
  -name=>'フィールド名',
  -src=>'/source/URL',
  -align=>'MIDDLE');

出力結果は下記のとおりです。

<input type="image" name="フィールド名" src="/source/URL" align="MIDDLE" />

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->image_button('フィールド名','/source/URL','MIDDLE');

image_buttonはクリッカブルなイメージを作成します。クリックされると、クリックの位置がスクリプトへbottun_name.xbutton_name.yとして返されます。button_nameのところはそれに指定した名前です。

image_buttonのパラメータは以下のとおりです。

引数名 内容
-name フィールド名(必須)
-src URL
-align TOP/BOTTOM/MIDDLEを指定可能

このボタンの値は以下のようにして取得できます

$x = $obj->param('button_name.x');
$y = $obj->param('button_name.y');

button  -JAVASCRIPTアクション・ボタンの作成

print $obj->button(
  -name=>'フィールド名',
  -value=>'user visible label',
  -onClick=>"do_something()");

出力結果は下記のとおりです。

<input type="button" name="フィールド名" value="user visible label" onclick="do_something()" />

名前付引数を使わずに、下記のようにも呼び出せます。

print $obj->button('フィールド名',"do_something()");
PAGE TOP

フォームからデータを受け取る機能

フォームフィールドのデータを取得する

フォームに入力・選択された値を取得する方法を、以下のフォームを例にしたがって説明します。

<form method="POST" action="post.cgi">

<p>ニックネーム<input type="text" name="nickname" size="20"></p>

<p>リスト<br>
<select size="3" name="list" multiple>
<option value="1">LIST1</option>
<option value="2">LIST2</option>
<option value="3">LIST3</option>
</select></p>

<p><input type="submit" value="送信"></p>

送信されたフォームの値を取得するには、paramメソッドの引数に必要なフォームフィールドの名称を指定します。

# フォームフィールド名 nickname の値を取得
$nickname = $obj->param('nickname');

複数選択可能なフォームであるチェックボックスやセレクトボックスを取得するには、以下のようにリストコンテキストにするだけです。

# フォームフィールド名 list の値を取得
@list = $obj->param('list');

フォームフィールドのすべての名前を受け取るには、paramメソッドに引数を与えないでリストコンテキストにするだけです。

@name = $obj->param;

配列@nameには、"nickname"、"list"という2つの要素が格納されます。

このエントリーをはてなブックマークに追加

標準モジュール一覧

2009年7月6日 コメントの追加


標準モジュールは、Perlのバージョンや環境によってインストールされていない、実装されていないといったことがあります。そのなかでも、確実に標準インストールされるものはソースキットのlibディレクトリ。環境やコンパイルオプションによってインストールされない場合もあるものはextディレクトリに含まれています。

モジュール名 説明
AnyDBM_File 複数のDBMに対するフレームワークを提供します
AutoLoader 要求された関数のみをロードします
AutoSplit パッケージを分割します
B Perlコンパイラおよび関連ツールです
B::Asmdata Perlのオペレータ(命令)に関する、自動生成されたデータを保持します
B::Assembler Perlバイトコードのアセンブルを行います
B::Bblock プログラムの基本ブロックをたどります
B::Bytecode Perlコンパイラのバイトコード生成バックエンドです
B::C Perlコンパイラ用のCバックエンドです
B::CC Perlコンパイラ用のCCバックエンドです
B::Debug Perlシンタックスツリーを調べ、各オペレーションに関するデバッグ情報を出力します
B::Deparse プログラムをコンパイルして得られた内部構造をもとにPerlソースを生成します
B::Disassembler Perlバイトコードを逆アセンブルします
B::Lint Perlプログラムをチェックします
B::Showlex 関数・ファイル内のレキシカル変数を表示します
B::Stackobj CCバックエンド用のモジュールです
B::Stash 読み込まれたStashを表示します
B::Terse Perlシンタックスツリーを調べ、各オペレータに関する情報を出力します
B::Xref 変数、サブルーチン、フォーマットのクロスリファレンスリストを生成します
Benchmark コードの実行時間のベンチマーク
ByteLoader コンパイルしたPerlコードのバイト読み込み
CGI CGIクラス
CGI::Apache CGIPerl-Apache APIと組み合わせて使用するための環境セットアップモジュールです
CGI::Carp HTTPDのエラーログに書き込みするためのCGIインタフェイスです
CGI::Cookie Cookiesを利用するためのCGIインタフェイスです
CGI::Fast Fast CGIを利用するためのCGIインタフェイスです
CGI::Pretty フォーマットしたHTMLを出力します
CGI::Push サーバプッシュ(Netscape専用)用のインタフェイスです
CGI::Switch 複数のコンストラクタを試して、最初に取得できたCGIオブジェクトを返します
CPAN CPANに対するインタフェイスです
CPAN::FirstTime CPANのコンフィグレーションファイルを生成します
CPAN::Nox XSモジュールを排除してCPANを実行します
Carp エラーの警告を出力します
Class::Struct 構造体風のデータ型をクラスとして宣言します
Config Perlのコンフィグレーション情報にアクセスします
Cwd 現在の作業ディレクトリのパス名を取得します
DB Perlデバッギング用APIのインタフェイスです
DB_File Berkeley DBにアクセスします
Data::Dumper 出力、もしくはevalしたPerlのデータ構造体を返します
Devel::DProf Perlコード・プロファイラです
Devel::Peek XSプログラマ用のデバッギングツールです
Devel::SelfStubber SelfLoadingモジュールに対するスタブを生成します
DirHandle ディレクトリハンドル用のオブジェクトメソッドを提供します
Dumpvalue Perlデータのダンプを提供します
DynaLoader Cライブラリを動的にPerlプログラムにロードします
English 記号変数の代わりに読みやすい英語名を使います
Env 環境変数をインポートします
Errno errno.hで定義されたシステムのerrno定数を提供します
Exporter モジュールのためのデフォルトimportメソッドを実装します
ExtUtils::Command 一般的なUNIXコマンドの変わりに使用するユーティリティーです
ExtUtils::Embed CC++アプリケーションにPerlを組み込むためのユーティリティ です
ExtUtils::Install 1つの場所からほかの場所にファイルをインストールします
ExtUtils::Installed インストール済みのモジュール内容を管理します
ExtUtils::Liblist 使用するライブラリと、その使用法を指定します
ExtUtils::MM_Cygwin ExtUtils::MakeMakerにあるUNIX依存の動作をオーバーライドするためのメソッド群 です
ExtUtils::MM_OS2 ExtUtils::MakeMakerにあるUNIX依存の動作をオーバーライドするためのメソッド群 です
ExtUtils::MM_Unix ExtUtils::MakeMakerに使用されるメソッド群
ExtUtils::MM_VMS ExtUtils::MakeMakerにあるUNIX依存の動作をオーバーライドするためのメソッド群 です
ExtUtils::MM_Win32 ExtUtils::MakeMakerにあるUNIX依存の動作をオーバーライドするためのメソッド群 です
ExtUtils::MakeMaker PerlエクステンションのMakefileを生成します
ExtUtils::Manifest MANIFESTファイルの作成sとチェックを行うユーティリティです
ExtUtils::Mkbootstrap DyaLoaderが使用するブートストラップファイルを作成します
ExtUtils::Mksymlists 動的エクステンションのためのリンカオプションファイルを書き出します
ExtUtils::Packlist .packlistファイルの管理を行います
ExtUtils::testlib @INCblib以下のディレクトリを追加します
Fatal 組み込み関数やPerlの関数でのエラーを致命的なものにします
Fcntl Cfcntl.hの定義をロードします
File::Basename パス名を分解します
File::CheckTree ファイルに対して各種のテストを実施します
> File::Compare ファイルやファイルハンドルの比較をします
File::Copy ファイルやファイルハンドルのコピーを行います
File::DosGlob DOS風のグロブ機能です
File::Find ファイルツリーを辿ります
File::Glob BSDグロブ用のPerl拡張です
File::Path 一連のディレクトリを作成・削除します
File::Spec ファイル名に関して移植性ある操作を提供します
File::Spec::Functions File::Specモジュールに対する関数呼び出しインタフェイスです
File::Spec::Mac File::SpecMacOS版です
File::Spec::OS2 File::SpecOS2版です
File::Spec::Unix File::Specです
File::Spec::VMS File::SpecVMS版です
File::Spec::Win32 File::SpecWin32版です
File::stat 名前によるPerlの組み込み関数statに対するインタフェイスです
FileCache システムの制限よりも多くのファイルをオープンします
FileHandle ファイルハンドルのためのオブジェクトメソッドを提供します
FindBin Perlスクリプトが格納されているディレクトリを探します
GDBM_File tieによってGDBMライブラリに対するアクセスします
Getopt::Long 拡張されたコマンドラインオプションの処理です
Getopt::Std まとまったスイッチのある一文字スイッチの処理です
I18N::Collate 8ビットのスカラーデータを、カレントのロカールに従って比較します
IO 様々なIOモジュールをロードします
IO::Dir ディレクトリハンドル用のオブジェクトメソッドを提供します
IO::File ファイルハンドルのためのオブジェクトメソッドを提供します
IO::Handle I/Oハンドルのためのオブジェクトメソッドを提供します
IO::Pipe パイプのためのオブジェクトメソッドを提供します
IO::Poll システムpoll呼び出しへのオブジェクト・インタフェイスです
IO::Seekable I/Oオブジェクトのためのseekベースのメソッドを提供します
IO::Select selectシステムコールに対するOOインタフェイスです
IO::Socket ソケット通信のオブジェクトインタフェイスです
IO::Socket::INET AF_INETドメインソケット通信のオブジェクトインタフェイス
IO::Socket::UNIX AF_UNIXドメインソケット通信のオブジェクトインタフェイス
IPC::Msg SysV Msg IPCのオブジェクトクラスです
IPC::Open2 読み込みと書き込みの両方のためにプロセスをオープンします
IPC::Open3 読み込み、書き込み、エラー処理のためにプロセスをオープンします
IPC::Semaphore SysVのセマフォIPCのオブジェクトクラスです
IPC::SysV SysVIPC関連定数です
Math::BigFloat 多倍長実数の数学パッケージです
Math::BigInt 多倍長整数の数学パッケージです
Math::Complex 複素数とそれに関連する数学的な関数です
Math::Trig 実数に対する三角関数のみを必要とする人のためのMath::Complexの一部分に対する単純なインタフェイスです
Net::Ping ホストへのPINGをチェックします
Net::hostent Perlの組み込み関数gethost*()に対する名前による インタフェイスです
Net::netent Perlの組み込み関数getnet*()に対する名前による インタフェイスです
Net::protoent Perlの組み込み関数getproto*()に対する名前による インタフェイスです
Net::servent Perlの組み込み関数getserv*()に対する名前による インタフェイスです
O Perlコンパイラバックエンドのインタフェイスです
Opcode Perlプログラムのコンパイルや実行のときに 名前の付いたオペコードを禁止します
POSIX IEEE規格1003.1に対するインターフェース
Pod::Checker PODドキュメントのシンタックスエラーのチェック
Pod::Functions podからHTMLへの変換処理に使用されます
Pod::Html PODファイルからHTMLへの変換を行います
Pod::InputObjects pod入力パラグラフ、コマンドなどを表わすオブジェクトです
Pod::Man PODデータをフォーマットされた*roff入力に変換します
Pod::Parser PODフィルタと変換を行うベースクラスです
Pod::Select 入力からPODのセクションを選択します
Pod::Text PODデータを整形されたASCIIテキストに変換します
Pod::Text::Color PODデータを整形されたASCIIテキストに変換します
Pod::Usage 埋め込まれたPODの使用法を出力します
SDBM_File tieによってSDBMファイルにアクセスします
Safe 制限された領域でプログラムのコンパイルと実行を行います
Search::Dict 辞書ファイルにあるキーを検索します
SelectSaver 選択されたファイルハンドルの保存と復帰を行います
SelfLoader 必要な関数のみをロードします
Shell Perlの中から透過的にシェルコマンドを実行します
Socket Csocket.hにある定数定義と構造体操作用関数をロードします
Symbol Perlのシンボルとその名前を操作します
Sys::Hostname ホスト名を取得する考えられるすべての方法を試します
Sys::Syslog UNIXsyslogコールに対するインタフェイスです
Term::Cap termcapインタフェイスです
Term::Complete 単語の補完モジュールです
Term::ReadLine 様々なReadLineパッケージに対するインタフェイスです
Test テストスクリプトを書くためのフレームワークです
Test::Harness Perlの標準テストスクリプトを統計を取りながら実行します
Text::Abbrev リストから略語テーブルを作成します
Text::ParseWords テキストを解析してトークンの配列にします
Text::Soundex Soundexアルゴリズムを実装したものです
Text::Wrap 単純なパラグラフに対する行ラッピングです
Tie::Array タイ配列に用のベースクラス定義です
Tie::Handle タイハンドル用のベースクラス定義です
Tie::Hash タイハッシュ用のベースクラス定義です
Tie::RefHash リファレンスをキーとして使っているタイハッシュに対するベースクラス定義です
Tie::Scalar タイスカラ用のベースクラス定義です
Tie::SubstrHash テーブルサイズ固定、キー長固定のハッシングです
Time::gmtime Perlの組み込み関数gmtimeに対する名前によるインタフェイスです
Time::Local localからGMT時刻への効率良い計算です
Time::localtime Perlの組み込み関数localtimeに対する名前によるインタフェイス です
Time::tm Time::gmtimeTime::localtimeによって使われる内部的なオブジェクト です
UNIVERSAL すべてのクラスのためのベースクラス(blessされたリファレンス)です
User::grent Perlの組み込み関数getgr*()に対する名前によるインタフェイスです
User::pwent Perlの組み込み関数getpw*()に対する名前によるインタフェイスです
   

システムにインストールされているドキュメントのないものや標準リリースにはないものを含めたすべてのモジュールを見つけ出すためには、以下のようにします。

% find `perl -e 'print "@INC"'` -name '*.pm' -print


プラグマモジュール

プラグマは、プログラムの実行時以外に、コンパイルの際にも作用するモジュールです。このため、通常はuseもしくはnoと一緒に使われたときにだけ働きます。これらのほとんどはレキシカルスコープなので、内側のブロックでは以下のようにして取り消すことができます。

no integer; no strict 'refs';

ブロックの終端まで有効です。

レキシカルスコープ
変数にアクセスできる範囲。レキシカルスコープの場合、変数が定義されているブロックの範囲内でしか、その変数にアクセスすることができない。

プログマの名前には、慣例的に小文字を使うことになっています。「標準モジュール一覧」で小文字表記のものは、すべてプラグマです。

use varsuse subs を使った変数の宣言は、ブロックに影響されません。これらを使った宣言は、その宣言がなされたファイル全体に影響を及ぼします。no varsno subs によって無効にすることはできません。

プラグマモジュールの一覧

以下に挙げるようなプラグマが定義されています。

プラグマ名 説明
autouse 関数が使用されるまでモジュールのロードを待ちます
blib MakeMakerの、パッケージのインストールされていないバージョンをコンパイル時に使うために@INCを操作します
diagnostics 冗長な警告検査を強制します
integer 数値演算を、倍精度実数ではなく整数で行ないます
less 資源の消費量を減らすようコンパイラに要求します
lib コンパイル時に@INCを操作します
locale 組み込み演算にPOSIXロケールを使用するかを指定します
ops コンパイル時に、安全でないオペレータの使用を制限します
overload 基本的なPerl演算をオーバーロードします
re 正規表現の動作を変更します
sigtrap 単純なシグナルハンドリングを有効にします
strict 安全でないコンストラクトを制限します
subs サブルーチンの名前をあらかじめ宣言します
vmsish 幾つかのVMS固有の言語機能を有効にします
vars グローバル変数名をあらかじめ宣言します
このエントリーをはてなブックマークに追加

Jump to the top