名前¶
perlmodlib - constructing new Perl modules and finding existing ones
perlmodlib - 新たな Perl モジュールを作ったり、既にあるものを検索する
THE PERL MODULE LIBRARY¶
Many modules are included in the Perl distribution. These are described below, and all end in .pm. You may discover compiled library files (usually ending in .so) or small pieces of modules to be autoloaded (ending in .al); these were automatically generated by the installation process. You may also discover files in the library directory that end in either .pl or .ph. These are old libraries supplied so that old programs that use them still run. The .pl files will all eventually be converted into standard modules, and the .ph files made by h2ph will probably end up as extension modules made by h2xs. (Some .ph values may already be available through the POSIX, Errno, or Fcntl modules.) The pl2pm file in the distribution may help in your conversion, but it's just a mechanical process and therefore far from bulletproof.
Perlの配布パッケージには、たくさんのモジュールが含まれています。 そのようなモジュールは後で説明しますが、 そのファイル名の終端は全て .pm になっています。 コンパイルされたライブラリファイル(普通は .so で終わっています) や autoload されるべきモジュールの小さい断片 (.al で終わっています) を 発見するかもしれません; これらはインストール処理によって自動的に 生成されます。 同様に、.pl や .ph で終わっているものを ライブラリディレクトリで発見するかもしれません。 これらのファイルは古いライブラリで、これを使う古いプログラムは今でも 実行可能です。 .pl ファイルは、最終的には標準モジュールへと変換され、 h2ph によって作成された .ph ファイルは h2xs によって 作成された拡張モジュールのようになるでしょう(幾つかの .ph の値は既に POSIX, Errno, Fcntl モジュールを通じて入手可能です)。 配布パッケージにあるファイル pl2pm はあなたの変換作業を助けてくれるかも しれませんが、これは機械的に処理するもので完全なものには程遠いものです。
プラグマモジュール¶
They work somewhat like compiler directives (pragmata) in that they tend to affect the compilation of your program, and thus will usually work well only when used within a use
, or no
. Most of these are lexically scoped, so an inner BLOCK may countermand them by saying:
これはあなたのプログラムのコンパイルに影響を及ぼすコンパイラ指示子 (プラグマタ)のように動作します。 このため、通常は use
もしくは no
と一緒に使われたときにだけ働きます。 これらのほとんどはレキシカルなスコープなので、内側のブロックでは 以下のようにして取り消すことができます:
no integer;
no strict 'refs';
no warnings;
which lasts until the end of that BLOCK.
これは BLOCK の終端まで有効です。
Some pragmas are lexically scoped--typically those that affect the $^H
hints variable. Others affect the current package instead, like use vars
and use subs
, which allow you to predeclare a variables or subroutines within a particular file rather than just a block. Such declarations are effective for the entire file for which they were declared. You cannot rescind them with no vars
or no subs
.
いくつかのプラグマはレキシカルスコープを持ちます -- 典型的には $^H
ヒント変数に影響を与えます。 その他のものは、use vars
や use subs
のように、代わりに現在の パッケージに影響を与えます; これによって、単に一つのブロックではなく 特定の ファイル の中に変数やサブルーチンを事前宣言できます。 このような宣言は、ファイル全体に宣言したい場合に効果的です。 これは no vars
や no subs
で撤回できません。
The following pragmas are defined (and have their own documentation).
以下のプラグマが定義されています(そして独自のドキュメントがあります)。
- attributes
-
Get/set subroutine or variable attributes
サブルーチンや変数の属性を取得・設定する
- attrs
-
Set/get attributes of a subroutine (deprecated)
サブルーチンの属性をを取得・設定する(古いもの)
- autouse
-
Postpone load of modules until a function is used
モジュールの読み込みを、関数が使われるまで延期する
- base
-
Establish IS-A relationship with base classes at compile time
コンパイル時にベースクラスを使って IS-A 関係を構築する
- bigint
-
Transparent BigInteger support for Perl
Perl のための透過的な BigInteger サポート
- bignum
-
Transparent BigNumber support for Perl
Perl のための透過的な BigNumber サポート
- bigrat
-
Transparent BigNumber/BigRational support for Perl
Perl のための透過的な BigNumber/BigRational サポート
- blib
-
Use MakeMaker's uninstalled version of a package
MakeMaker の、パッケージのインストールされていないバージョンを使う
- bytes
-
Force byte semantics rather than character semantics
文字単位ではなくバイト単位であることを強制する
- charnames
-
Define character names for
\N{named}
string literal escapes\N{named}
文字リテラルエスケープのための文字名を定義する - constant
-
Declare constants
定数を宣言する
- diagnostics
-
Produce verbose warning diagnostics
冗長な警告検査を出力する
- encoding
-
Allows you to write your script in non-ascii or non-utf8
非 ascii や 非 utf8 でスクリプトを書けるようにする
- fields
-
Compile-time class fields
コンパイル時のクラスフィールド
- filetest
-
Control the filetest permission operators
ファイルテストパーミッション演算子を制御する
- if
-
use
a Perl module if a condition holds条件を満たした時にだけ Perl モジュールを
use
する - integer
-
Use integer arithmetic instead of floating point
数値演算を、浮動小数点数ではなく整数で行う
- less
-
Request less of something from the compiler
コンパイラから、より少ない何かを要求する
- lib
-
Manipulate @INC at compile time
コンパイル時に @INC を操作する
- locale
-
Use and avoid POSIX locales for built-in operations
組み込み演算に対しての POSIX ロケールを使ったり、無視したりする
- open
-
Set default PerlIO layers for input and output
入出力のためのデフォルト PerlIO 層をセットする
- ops
-
Restrict unsafe operations when compiling
コンパイル時に、安全でない操作を制限する
- overload
-
Package for overloading Perl operations
Perl 演算をオーバーロードするパッケージ
- re
-
Alter regular expression behaviour
正規表現の動作を変更する
- sigtrap
-
Enable simple signal handling
単純なシグナルハンドリングを有効にする
- sort
-
Control sort() behaviour
sort() の振る舞いを制御する
- strict
-
Restrict unsafe constructs
安全でないコンストラクトを制限する
- subs
-
Predeclare sub names
サブルーチンの名前を先行宣言する
- threads
-
Perl extension allowing use of interpreter based threads from perl
perl のインタプリタベースのスレッドを使用できるようにする Perl 拡張
- threads::shared
-
Perl extension for sharing data structures between threads
スレッド間でデータ構造を共有する Perl 拡張
- utf8
-
Enable/disable UTF-8 (or UTF-EBCDIC) in source code
ソースコードでの UTF-8 (または UTF-EBCDIC) を有効/無効にする
- vars
-
Predeclare global variable names (obsolete)
大域変数名を先行宣言する(古いもの)
- vmsish
-
Control VMS-specific language features
VMS固有の言語仕様を制御する
- warnings
-
Control optional warnings
追加の警告を制御する
- warnings::register
-
Warnings import function
インポート関数の警告
標準モジュール¶
Standard, bundled modules are all expected to behave in a well-defined manner with respect to namespace pollution because they use the Exporter module. See their own documentation for details.
標準でバンドルされている名前空間の汚染を考慮する良く定義されたマナーに 基づいた振る舞いを期待されるモジュールです。 これは Exporter モジュールを使っているからです。 詳細についてはそれぞれのドキュメントを参照してください。
It's possible that not all modules listed below are installed on your system. For example, the GDBM_File module will not be installed if you don't have the gdbm library.
以下にリストされたモジュールが全てはインストールされていない可能性が あります。 例えば、GDBM_File モジュールは gdbm ライブラリがなければ インストールされません。
- AnyDBM_File
-
Provide framework for multiple DBMs
複数のDBMに対するフレームワークを提供する
- Attribute::Handlers
-
Simpler definition of attribute handlers
属性ハンドラのより単純な定義
- AutoLoader
-
Load subroutines only on demand
要求されたサブルーチンのみをロードする
- AutoSplit
-
Split a package for autoloading
autoloadingのためにパッケージを分割する
- B
-
The Perl Compiler
Perl コンパイラ
- B::Asmdata
-
Autogenerated data about Perl ops, used to generate bytecode
バイトコードを生成するための、Perl の演算子に関する自動生成されたデータ
- B::Assembler
-
Assemble Perl bytecode
Perl バイトコードをアセンブルする
- B::Bblock
-
Walk basic blocks
基本ブロックを辿る
- B::Bytecode
-
Perl compiler's bytecode backend
Perl コンパイラのバイトコードバックエンド
- B::C
-
Perl compiler's C backend
Perl コンパイラの C バックエンド
- B::CC
-
Perl compiler's optimized C translation backend
Perl コンパイラの、最適化された C 変換バックエンド
- B::Concise
-
Walk Perl syntax tree, printing concise info about ops
Perl の構文木を辿り、演算子に関する簡潔な情報を表示する
- B::Debug
-
Walk Perl syntax tree, printing debug info about ops
Perl の構文木を辿り、演算子に関するデバッグ情報を表示する
- B::Deparse
-
Perl compiler backend to produce perl code
perl コードを出力するための Perl コンパイラのバックエンド
- B::Disassembler
-
Disassemble Perl bytecode
Perl バイトコードを逆アセンブルする
- B::Lint
-
Perl lint
Perl の lint
- B::Showlex
-
Show lexical variables used in functions or files
関数やファイルで使われているレキシカル変数を表示する
- B::Stackobj
-
Helper module for CC backend
CC バックエンドのヘルパーモジュール
- B::Stash
-
Show what stashes are loaded
どの stash が読み込まれたかを表示する
- B::Terse
-
Walk Perl syntax tree, printing terse info about ops
Perl 構文木を辿って、演算子に関する簡潔な説明を表示する
- B::Xref
-
Generates cross reference reports for Perl programs
Perl プログラムのためのクロスリファレンスレポートを生成する
- Benchmark
-
Benchmark running times of Perl code
Perl コードの実行時間のベンチマーク
- ByteLoader
-
Load byte compiled perl code
バイトコンパイルした perl コードを読み込む
- CGI
-
Simple Common Gateway Interface Class
シンプルな Common Gateway Interface クラス
- CGI::Apache
-
Backward compatibility module for CGI.pm
CGI.pm のための過去互換性モジュール
- CGI::Carp
-
CGI routines for writing to the HTTPD (or other) error log
HTTPD(またはその他の)エラーログを書くための CGI ルーチン
- CGI::Cookie
-
Interface to Netscape Cookies
Netscape Cookies へのインターフェース
- CGI::Fast
-
CGI Interface for Fast CGI
Fast CGI のための CGI インターフェース
- CGI::Pretty
-
Module to produce nicely formatted HTML code
いい感じにフォーマットされた HTML コードを生成するモジュール
- CGI::Push
-
Simple Interface to Server Push
サーバープッシュのためのシンプルなインターフェース
- CGI::Switch
-
Backward compatibility module for defunct CGI::Switch
今はなき CGI::Switch モジュールのための過去互換性モジュール
- CGI::Util
-
Internal utilities used by CGI module
CGI モジュールで使われる内部ユーティリティ
- CPAN
-
Query, download and build perl modules from CPAN sites
CPAN サイトから perl モジュールを問い合わせ、ダウンロード、ビルドする
- CPAN::FirstTime
-
Utility for CPAN::Config file Initialization
CPAN::Config ファイル初期化のためのユーティリティ
- CPAN::Nox
-
Wrapper around CPAN.pm without using any XS module
XS モジュールを使わない CPAN.pm のラッパ
- CPAN::Version
-
Utility functions to compare CPAN versions
CPAN バージョンを比較するためのユーティリティ関数
- Carp
-
Warn of errors (from perspective of caller)
エラーの警告(呼び出し側の視点から)
- Carp::Heavy
-
Heavy machinery, no user serviceable parts inside
重機であり、内部にユーザーが使える部分はない
- Class::ISA
-
Report the search path for a class's ISA tree
クラスの ISA 木の検索パスを報告する
- Class::Struct
-
Declare struct-like datatypes as Perl classes
構造体に似たデータ型を Perl クラスとして宣言する
- Config
-
Access Perl configuration information
Perlのコンフィグレーション情報にアクセスする
- Cwd
-
Get pathname of current working directory
カレントの作業ディレクトリのパス名を取得する
- DB
-
Programmatic interface to the Perl debugging API (draft, subject to
Perl デバッグ API へのプログラム可能なインターフェース
- DBM_Filter
-
Filter DBM keys/values
フィルタ DBM キー/値
- DB_File
-
Perl5 access to Berkeley DB version 1.x
Berkeley DB バージョン 1.x に対する Perl5 アクセス
- Data::Dumper
-
Stringified perl data structures, suitable for both printing and
eval
表示と
eval
に適した文字列化 perl データ構造 - Devel::DProf
-
A Perl code profiler
Perl コードプロファイラ
- Devel::PPPort
-
Perl/Pollution/Portability
Perl/Pollution/Portability
- Devel::Peek
-
A data debugging tool for the XS programmer
XS プログラマのためのデータデバッグツール
- Devel::SelfStubber
-
Generate stubs for a SelfLoading module
SelfLoading モジュールに対するスタブを生成する
- Digest
-
Modules that calculate message digests
メッセージダイジェストを計算するモジュール
- Digest::MD5
-
Perl interface to the MD5 Algorithm
MD5 アルゴリズムへの Perl インターフェース
- Digest::base
-
Digest base class
Digest 基底クラス
- Digest::file
-
Calculate digests of files
ファイルのダイジェストを計算する
- DirHandle
-
Supply object methods for directory handles
ディレクトリハンドル用のオブジェクトメソッドを提供する
- Dumpvalue
-
Provides screen dump of Perl data.
Perl データのスクリーンダンプを提供する
- DynaLoader
-
Dynamically load C libraries into Perl code
Cのライブラリを動的にPerlプログラムにロードする
- Encode
-
Character encodings
文字エンコーディング
- Encode::Alias
-
Alias definitions to encodings
エンコーディングへの別名定義
- Encode::Byte
-
Single Byte Encodings
単一バイトエンコーディング
- Encode::CJKConstants
-
Internally used by Encode::??::ISO_2022_*
Encode::??::ISO_2022_* によって内部で使用されている
- Encode::CN
-
China-based Chinese Encodings
中国での中国語エンコーディング
- Encode::CN::HZ
-
Internally used by Encode::CN
Encode::CN によって内部で使用されている
- Encode::Config
-
Internally used by Encode
Encode によって内部で使用されている
- Encode::EBCDIC
-
EBCDIC Encodings
EBCDIC エンコーディング
- Encode::Encoder
-
Object Oriented Encoder
オブジェクト指向のエンコーダ
- Encode::Encoding
-
Encode Implementation Base Class
Encode 実装基底クラス
- Encode::Guess
-
Guesses encoding from data
データからエンコーディングを推測する
- Encode::JP
-
Japanese Encodings
日本語エンコーディング
- Encode::JP::H2Z
-
Internally used by Encode::JP::2022_JP*
Encode::JP::2022_JP* によって内部で使用されている
- Encode::JP::JIS7
-
Internally used by Encode::JP
Encode::JP によって内部で使用されている
- Encode::KR
-
Korean Encodings
韓国語エンコーディング
- Encode::KR::2022_KR
-
Internally used by Encode::KR
Encode::KR によって内部で使用されている
- Encode::MIME::Header
-
MIME 'B' and 'Q' header encoding
MIME 'B' ヘッダと MIME 'Q' ヘッダのエンコーディング
- Encode::PerlIO
-
A detailed document on Encode and PerlIO
Encode と PerlIO の詳細ドキュメント
- Encode::Supported
-
Encodings supported by Encode
Encode で対応しているエンコーディング
- Encode::Symbol
-
Symbol Encodings
シンボルエンコーディング
- Encode::TW
-
Taiwan-based Chinese Encodings
台湾での中国語エンコーディング
- Encode::Unicode
-
Various Unicode Transformation Formats
様々な Unicode 変換形式
- Encode::Unicode::UTF7
-
UTF-7 encoding
UTF-7 エンコーディング
- English
-
Use nice English (or awk) names for ugly punctuation variables
読みにくい句読点変数に対して読みやすい英語(もしくは awk)の名前を使う
- Env
-
Perl module that imports environment variables as scalars or arrays
環境変数をスカラ変数または配列変数としてインポートする Perl モジュール
- Errno
-
System errno constants
システムの errno 定数
- Exporter
-
Implements default import method for modules
モジュールのためのデフォルト import メソッドを実装する
- Exporter::Heavy
-
Exporter guts
Exporter の中身
- ExtUtils::Command
-
Utilities to replace common UNIX commands in Makefiles etc.
Makefile などの中の一般的な UNIX コマンドを置き換えるためのユーティリティ
- ExtUtils::Command::MM
-
Commands for the MM's to use in Makefiles
Makefile の中で使うための MM のコマンド
- ExtUtils::Constant
-
Generate XS code to import C header constants
C ヘッダ定数をインポートするための XS コードを生成する
- ExtUtils::Constant::Base
-
Base class for ExtUtils::Constant objects
ExtUtils::Constant オブジェクトのための基底クラス
- ExtUtils::Constant::Utils
-
Helper functions for ExtUtils::Constant
ExtUtils::Constant のためのヘルパー関数
- ExtUtils::Constant::XS
-
Base class for ExtUtils::Constant objects
ExtUtils::Constant オブジェクトのための基底クラス
- ExtUtils::Embed
-
Utilities for embedding Perl in C/C++ applications
CやC++アプリケーションにPerlを組み込むためのユーティリティ
- ExtUtils::Install
-
Install files from here to there
こちらからあちらにファイルをインストールする
- ExtUtils::Installed
-
Inventory management of installed modules
インストールしたモジュールの目録管理
- ExtUtils::Liblist
-
Determine libraries to use and how to use them
ライブラリを使うために使用するライブラリを決定する
- ExtUtils::MM
-
OS adjusted ExtUtils::MakeMaker subclass
OS によって調整した ExtUtils::MakeMaker の派生クラス
- ExtUtils::MM_AIX
-
AIX specific subclass of ExtUtils::MM_Unix
AIX 固有の ExtUtils::MM_Unix の派生クラス
- ExtUtils::MM_Any
-
Platform-agnostic MM methods
プラットフォームが分からない場合の MM メソッド
- ExtUtils::MM_BeOS
-
Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MakeMaker での UN*X の振る舞いを上書きするメソッド
- ExtUtils::MM_Cygwin
-
Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MakeMaker での UN*X の振る舞いを上書きするメソッド
- ExtUtils::MM_DOS
-
DOS specific subclass of ExtUtils::MM_Unix
DOS 固有の ExtUtils::MM_Unix の派生クラス
- ExtUtils::MM_MacOS
-
Once produced Makefiles for MacOS Classic
MacOS Classic のために一度生成された Makefile
- ExtUtils::MM_NW5
-
Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MakeMaker での UN*X の振る舞いを上書きするメソッド
- ExtUtils::MM_OS2
-
Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MakeMaker での UN*X の振る舞いを上書きするメソッド
- ExtUtils::MM_QNX
-
QNX specific subclass of ExtUtils::MM_Unix
QNX 固有の ExtUtils::MM_Unix の派生クラス
- ExtUtils::MM_UWIN
-
U/WIN specific subclass of ExtUtils::MM_Unix
U/WIN 固有の ExtUtils::MM_Unix の派生クラス
- ExtUtils::MM_Unix
-
Methods used by ExtUtils::MakeMaker
ExtUtils::MakeMaker によって使用されるメソッド群
- ExtUtils::MM_VMS
-
Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MakeMaker での UN*X の振る舞いを上書きするメソッド
- ExtUtils::MM_VOS
-
VOS specific subclass of ExtUtils::MM_Unix
VOS 固有の ExtUtils::MM_Unix の派生クラス
- ExtUtils::MM_Win32
-
Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MakeMaker での UN*X の振る舞いを上書きするメソッド
- ExtUtils::MM_Win95
-
Method to customize MakeMaker for Win9X
Win9X のために MakeMaker をカスタマイズするメソッド
- ExtUtils::MY
-
ExtUtils::MakeMaker subclass for customization
カスタマイズのための ExtUtils::MakeMaker の派生クラス
- ExtUtils::MakeMaker
-
Create a module Makefile
モジュールの Makefile を生成する
- ExtUtils::MakeMaker::Config
-
Wrapper around Config.pm
Config.pm のラッパー
- ExtUtils::MakeMaker::FAQ
-
Frequently Asked Questions About MakeMaker
MakeMaker に関するよくある質問とその答え
- ExtUtils::MakeMaker::Tutorial
-
Writing a module with MakeMaker
MakeMaker でモジュールを書く
- ExtUtils::MakeMaker::bytes
-
Version-agnostic bytes.pm
バージョンが分からないときの bytes.pm
- ExtUtils::MakeMaker::vmsish
-
Platform-agnostic vmsish.pm
プラットフォームが分からないときの vmsish.pm
- ExtUtils::Manifest
-
Utilities to write and check a MANIFEST file
MANIFEST ファイルを書き出したりチェックしたりするためのユーティリティ
- ExtUtils::Mkbootstrap
-
Make a bootstrap file for use by DynaLoader
DyaLoaderによって使用されるブートストラップファイルを作成する
- ExtUtils::Mksymlists
-
Write linker options files for dynamic extension
動的拡張のためのリンカーオプションファイルを書き出す
- ExtUtils::Packlist
-
Manage .packlist files
.packlist ファイルを管理する
- ExtUtils::testlib
-
Add blib/* directories to @INC
@INC に blib/* ディレクトリを追加する
- Fatal
-
Replace functions with equivalents which succeed or die
成功しなければ die する等価な関数に置き換える
- Fcntl
-
Load the C Fcntl.h defines
C の Fcntl.h の定義をロードする
- File::Basename
-
Parse file paths into directory, filename and suffix.
ファイルパスをディレクトリ、ファイル名、拡張子にパースする
- File::CheckTree
-
Run many filetest checks on a tree
木に対して多くのファイル検査を実行する
- File::Compare
-
Compare files or filehandles
ファイルやファイルハンドルを比較する
- File::Copy
-
Copy files or filehandles
ファイルやファイルハンドルを複写する
- File::DosGlob
-
DOS like globbing and then some
DOS 風グロブ
- File::Find
-
Traverse a directory tree.
ディレクトリツリーを辿る
- File::Glob
-
Perl extension for BSD glob routine
BSD グロブルーチンのための Perl エクステンション
- File::Path
-
Create or remove directory trees
ディレクトリツリーを生成・削除する
- File::Spec
-
Portably perform operations on file names
ファイル名に関して移植性ある操作を提供する
- File::Spec::Cygwin
-
Methods for Cygwin file specs
Cygwin file specs のためのメソッド
- File::Spec::Epoc
-
Methods for Epoc file specs
Epoc file specs のためのメソッド
- File::Spec::Functions
-
Portably perform operations on file names
ファイル名に関して移植性ある操作を提供する
- File::Spec::Mac
-
File::Spec for Mac OS (Classic)
Mac OS (Classic) のための File::Spec
- File::Spec::OS2
-
Methods for OS/2 file specs
OS/2 file specs のためのメソッド
- File::Spec::Unix
-
File::Spec for Unix, base for other File::Spec modules
その他の File::Spec モジュールの基礎となる、Unix のための File::Spec
- File::Spec::VMS
-
Methods for VMS file specs
VMS file specs のためのメソッド
- File::Spec::Win32
-
Methods for Win32 file specs
Win32 file specs のためのメソッド
- File::Temp
-
Return name and handle of a temporary file safely
一時ファイルの名前とハンドルを安全に返す
- File::stat
-
By-name interface to Perl's built-in stat() functions
名前による Perl の組み込み関数 stat() に対するインターフェース
- FileCache
-
Keep more files open than the system permits
システムの制限よりも多くのファイルを開く
- FileHandle
-
Supply object methods for filehandles
ファイルハンドルのためのオブジェクトメソッドを提供する
- Filter::Simple
-
Simplified source filtering
単純化したソースフィルタリング
- Filter::Util::Call
-
Perl Source Filter Utility Module
Perl ソースフィルタユーティリティモジュール
- FindBin
-
Locate directory of original perl script
オリジナルの Perl スクリプトのディレクトリ位置を特定する
- GDBM_File
-
Perl5 access to the gdbm library.
gdbm ライブラリに対する Perl5 アクセス
- Getopt::Long
-
Extended processing of command line options
拡張されたコマンドラインオプションの処理
- Getopt::Std
-
Process single-character switches with switch clustering
まとまったスイッチのある一文字スイッチの処理
- Hash::Util
-
A selection of general-utility hash subroutines
一般的なユーティリティハッシュサブルーチンの選集
- I18N::Collate
-
Compare 8-bit scalar data according to the current locale
8 ビットのスカラデータを、カレントのロケールに従って比較する
- I18N::LangTags
-
Functions for dealing with RFC3066-style language tags
RFC3066-形式の言語タグを扱うための関数
- I18N::LangTags::Detect
-
Detect the user's language preferences
ユーザーの言語プリファレンスを検出する
- I18N::LangTags::List
-
Tags and names for human languages
自然言語のためのタグと名前
- I18N::Langinfo
-
Query locale information
ロケール情報を問い合わせる
- IO
-
Load various IO modules
様々な IO モジュールをロードする
- IO::Dir
-
Supply object methods for directory handles
ディレクトリハンドルのためのオブジェクトメソッドを提供する
- IO::File
-
Supply object methods for filehandles
ファイルハンドルのためのオブジェクトメソッドを提供する
- IO::Handle
-
Supply object methods for I/O handles
I/O ハンドルのためのオブジェクトメソッドを提供する
- IO::Pipe
-
Supply object methods for pipes
パイプのためのオブジェクトメソッドを提供する
- IO::Poll
-
Object interface to system poll call
システムポーリング呼び出しのためのオブジェクトインターフェース
- IO::Seekable
-
Supply seek based methods for I/O objects
I/O オブジェクトのための seek ベースのメソッドを提供する
- IO::Select
-
OO interface to the select system call
select システムコールに対する OO インターフェース
- IO::Socket
-
Object interface to socket communications
ソケット通信のためのオブジェクトインターフェース
- IO::Socket::INET
-
Object interface for AF_INET domain sockets
AF_INET ドメインソケットのためのオブジェクトインターフェース
- IO::Socket::UNIX
-
Object interface for AF_UNIX domain sockets
AF_UNIX ドメインソケットのためのオブジェクトインターフェース
- IPC::Open2
-
Open a process for both reading and writing
読み込みと書き込みの両方のためにプロセスを開く
- IPC::Open3
-
Open a process for reading, writing, and error handling
読み込み、書き込み、エラー処理のためにプロセスを開く
- IPC::SysV
-
SysV IPC constants
SysV IPC 定数
- IPC::SysV::Msg
-
SysV Msg IPC object class
SysV Msg IPC オブジェクトクラス
- IPC::SysV::Semaphore
-
SysV Semaphore IPC object class
SysV Semaphore IPC オブジェクトクラス
- List::Util
-
A selection of general-utility list subroutines
一般的なユーティリティリストサブルーチンの選集
- Locale::Constants
-
Constants for Locale codes
ロケールコード定数
- Locale::Country
-
ISO codes for country identification (ISO 3166)
国識別のための ISO コード (ISO 3166)
- Locale::Currency
-
ISO three letter codes for currency identification (ISO 4217)
通貨識別のための 3 文字 ISO コード(ISO 4217)
- Locale::Language
-
ISO two letter codes for language identification (ISO 639)
言語識別のための 2 文字 ISO コード(ISO 639)
- Locale::Maketext
-
Framework for localization
地域化のためのフレームワーク
- Locale::Maketext::TPJ13
-
Article about software localization
ソフトウェア地域化に関する記事
- Locale::Script
-
ISO codes for script identification (ISO 15924)
文字体系識別のための ISO コード (ISO 15924)
- MIME::Base64
-
Encoding and decoding of base64 strings
base64 文字列のエンコードとデコード
- MIME::Base64::QuotedPrint
-
Encoding and decoding of quoted-printable strings
quoted-printable 文字列のエンコードとデコード
- Math::BigFloat
-
Arbitrary size floating point math package
多倍長実数の数学パッケージ
- Math::BigInt
-
Arbitrary size integer/float math package
多倍長整数/浮動小数点数の数学パッケージ
- Math::BigInt::Calc
-
Pure Perl module to support Math::BigInt
Math::BigInt に対応する Pure Perl モジュール
- Math::BigInt::CalcEmu
-
Emulate low-level math with BigInt code
BigInt コードの低レベル計算をエミュレートする
- Math::BigRat
-
Arbitrary big rational numbers
任意桁の有理数
- Math::Complex
-
Complex numbers and associated mathematical functions
複素数とそれに関連する数学的な関数
- Math::Trig
-
Trigonometric functions
三角関数
- Memoize
-
Make functions faster by trading space for time
メモリを犠牲にして関数を高速化する
- Memoize::AnyDBM_File
-
Glue to provide EXISTS for AnyDBM_File for Storable use
Storable での使用のために AnyDBM_File に EXISTS を提供するための糊
- Memoize::Expire
-
Plug-in module for automatic expiration of memoized values
記憶した値の自動的な破棄のためのプラグインモジュール
- Memoize::ExpireFile
-
Test for Memoize expiration semantics
Memoize の破棄動作のためのテスト
- Memoize::ExpireTest
-
Test for Memoize expiration semantics
Memoize の破棄動作のためのテスト
- Memoize::NDBM_File
-
Glue to provide EXISTS for NDBM_File for Storable use
Storable での使用のために NDBM_File に EXISTS を提供するための糊
- Memoize::SDBM_File
-
Glue to provide EXISTS for SDBM_File for Storable use
Storable での使用のために SDBM_File に EXISTS を提供するための糊
- Memoize::Storable
-
Store Memoized data in Storable database
記憶したデータを Storable データベースに保管する
- NDBM_File
-
Tied access to ndbm files
ndbm ファイルに対する tie されたアクセス
- NEXT
-
Provide a pseudo-class NEXT (et al) that allows method redispatch
メソッドの再ディスパッチを可能にする擬似クラス NEXT(など)を提供する
- Net::Cmd
-
Network Command class (as used by FTP, SMTP etc)
(FTP, SMTP などで使われる) ネットワークコマンドクラス
- Net::Config
-
Local configuration data for libnet
libnet のためのローカル設定
- Net::Domain
-
Attempt to evaluate the current host's internet name and domain
現在のホストのインターネット名とドメインを評価しようとする
- Net::FTP
-
FTP Client class
FTP クライアントクラス
- Net::NNTP
-
NNTP Client class
NNTP クライアントクラス
- Net::Netrc
-
OO interface to users netrc file
ユーザーの netrc ファイルへの OO インターフェース
- Net::POP3
-
Post Office Protocol 3 Client class (RFC1939)
Post Office Protocol 3 (RFC1939) クライアントクラス
- Net::Ping
-
Check a remote host for reachability
リモートホストへの到達性をチェックする
- Net::SMTP
-
Simple Mail Transfer Protocol Client
Simple Mail Transfer Protocol クライアント
- Net::Time
-
Time and daytime network client interface
time と daytime のネットワーククライアントインターフェース
- Net::hostent
-
By-name interface to Perl's built-in gethost*() functions
Perl の組み込み関数 gethost*() に対する名前によるインターフェース
- Net::libnetFAQ
-
Libnet Frequently Asked Questions
libnet のよくある質問と答え
- Net::netent
-
By-name interface to Perl's built-in getnet*() functions
Perl の組み込み関数 getnet*() に対する名前による インターフェース
- Net::protoent
-
By-name interface to Perl's built-in getproto*() functions
Perl の組み込み関数 getproto*() に対する名前による インターフェース
- Net::servent
-
By-name interface to Perl's built-in getserv*() functions
Perl の組み込み関数 getserv*() に対する名前による インターフェース
- O
-
Generic interface to Perl Compiler backends
Perl コンパイラバックエンドへの一般的なインターフェース
- ODBM_File
-
Tied access to odbm files
odbm ファイルへの tie されたアクセス
- Opcode
-
Disable named opcodes when compiling perl code
Perl プログラムのコンパイル時に 名前の付いたオペコードを禁止する
- POSIX
-
Perl interface to IEEE Std 1003.1
IEEE Standard 1003.1 に対するインターフェース
- PerlIO
-
On demand loader for PerlIO layers and root of PerlIO::* name space
PerlIO 層のオンデマンドな読み込みと、PerlIO::* 名前空間のルート
- PerlIO::encoding
-
Encoding layer
encoding 層
- PerlIO::scalar
-
In-memory IO, scalar IO
インメモリ IO とスカラ IO
- PerlIO::via
-
Helper class for PerlIO layers implemented in perl
perl で実装されている PerlIO 層のヘルパークラス
- PerlIO::via::QuotedPrint
-
PerlIO layer for quoted-printable strings
quoted-printable 文字列のための PerlIO 層
- Pod::Checker
-
Check pod documents for syntax errors
POD ドキュメントの文法エラーをチェックする
- Pod::Find
-
Find POD documents in directory trees
ディレクトリツリーから POD ドキュメントを見つける
- Pod::Functions
-
Group Perl's functions a la perlfunc.pod
Perl の関数を perlfunc.pod 風に集める
- Pod::Html
-
Module to convert pod files to HTML
POD ファイルを HTML に変換するモジュール
- Pod::InputObjects
-
Objects representing POD input paragraphs, commands, etc.
POD 入力段落、コマンドなどを表現するオブジェクト
- Pod::LaTeX
-
Convert Pod data to formatted Latex
POD データをフォーマットされた Latex に変換する
- Pod::Man
-
Convert POD data to formatted *roff input
POD データをフォーマットされた *roff 入力に変換する
- Pod::ParseLink
-
Parse an L<> formatting code in POD text
POD テキスト中の L<> フォーマットコードをパースする
- Pod::ParseUtils
-
Helpers for POD parsing and conversion
POD のパースと変換のためのヘルパークラス
- Pod::Parser
-
Base class for creating POD filters and translators
POD フィルタと変換器をを作成するための基底クラス
- Pod::Perldoc::ToChecker
-
Let Perldoc check Pod for errors
Perldoc に Pod のエラーをチェックさせる
- Pod::Perldoc::ToMan
-
Let Perldoc render Pod as man pages
Perldoc に POD を man ページとして表現させる
- Pod::Perldoc::ToNroff
-
Let Perldoc convert Pod to nroff
Perldoc に POD を nroff に変換させる
- Pod::Perldoc::ToPod
-
Let Perldoc render Pod as ... Pod!
Perldoc に POD を…PODとして表現させる!
- Pod::Perldoc::ToRtf
-
Let Perldoc render Pod as RTF
Perldoc に POD を RTF として表現させる
- Pod::Perldoc::ToText
-
Let Perldoc render Pod as plaintext
Perldoc に POD をプレーンテキストとして表現させる
- Pod::Perldoc::ToTk
-
Let Perldoc use Tk::Pod to render Pod
Perldoc に、POD の表現に Tk::Pod を使うようにさせる
- Pod::Perldoc::ToXml
-
Let Perldoc render Pod as XML
Perldoc に POD を XML として表現させる
- Pod::PlainText
-
Convert POD data to formatted ASCII text
POD データをフォーマットされた ASCII テキストに変換する
- Pod::Plainer
-
Perl extension for converting Pod to old style Pod.
POD を古い形式の POD に変換するための Perl エクステンション
- Pod::Select
-
Extract selected sections of POD from input
入力から POD の選択した章を抽出する
- Pod::Text
-
Convert POD data to formatted ASCII text
POD データを整形された ASCII テキストに変換する
- Pod::Text::Color
-
Convert POD data to formatted color ASCII text
POD データを整形された色付き ASCII テキストに変換する
- Pod::Text::Overstrike
-
Convert POD data to formatted overstrike text
POD データを整形された重ね打ちテキストに変換する
- Pod::Text::Termcap
-
Convert POD data to ASCII text with format escapes
POD データを整形されたエスケープつきの ASCII テキストに変換する
- Pod::Usage
-
Print a usage message from embedded pod documentation
組み込みの POD ドキュメントから使用法を表示する
- SDBM_File
-
Tied access to sdbm files
sdbm ファイルに対する tie されたアクセス
- Safe
-
Compile and execute code in restricted compartments
制限された領域でプログラムのコンパイルと実行を行う
- Scalar::Util
-
A selection of general-utility scalar subroutines
汎用ユーティリティスカラサブルーチンの選集
- Search::Dict
-
Search for key in dictionary file
辞書ファイルにあるキーを検索する
- SelectSaver
-
Save and restore selected file handle
選択されたファイルハンドルの保存と復帰を行う
- SelfLoader
-
Load functions only on demand
必要な関数のみをロードする
- Shell
-
Run shell commands transparently within perl
Perl の中から透過的にシェルコマンドを実行する
- Socket
-
Load the C socket.h defines and structure manipulators
Cの socket.h にある定義と構造体操作子(structure manipulators)を ロードする
- Storable
-
Persistence for Perl data structures
Perl データ構造の永続化
- Switch
-
A switch statement for Perl
Perl のための switch 文
- Symbol
-
Manipulate Perl symbols and their names
Perlのシンボルとその名前を操作する
- Sys::Hostname
-
Try every conceivable way to get hostname
ホスト名を取得する考えられるすべての方法を試行する
- Sys::Syslog
-
Perl interface to the UNIX syslog(3) calls
UNIX の syslog(3) コールに対する Perl インターフェース
- Term::ANSIColor
-
Color screen output using ANSI escape sequences
ANSI エスケープシーケンスを使った色付き画面出力
- Term::Cap
-
Perl termcap interface
Perl の termcap インターフェース
- Term::Complete
-
Perl word completion module
語の補完モジュール
- Term::ReadLine
-
Perl interface to various
readline
packages.様々な
readline
パッケージに対する Perl インターフェース - Test
-
Provides a simple framework for writing test scripts
テストスクリプトを書くための単純なフレームワークを提供する
- Test::Builder
-
Backend for building test libraries
テストライブラリをビルドするためのバックエンド
- Test::Builder::Module
-
Base class for test modules
テストモジュールの基底クラス
- Test::Builder::Tester
-
Test testsuites that have been built with
ビルドされたテストスイートをテストする
- Test::Builder::Tester::Color
-
Turn on colour in Test::Builder::Tester
Test::Builder::Tester を色付きにする
- Test::Harness
-
Run Perl standard test scripts with statistics
Perl の標準テストスクリプトを統計を取りながら実行する
- Test::Harness::Assert
-
Simple assert
単純なアサート
- Test::Harness::Iterator
-
Internal Test::Harness Iterator
Test::Harness の内部反復子
- Test::Harness::Point
-
Object for tracking a single test point
ひとつのテストポイントを追跡するためのオブジェクト
- Test::Harness::Straps
-
Detailed analysis of test results
テスト結果の詳細な分析
- Test::Harness::TAP
-
Documentation for the TAP format
TAP フォーマットのドキュメント
- Test::More
-
Yet another framework for writing test scripts
テストスクリプトを書くためのもう一つのフレームワーク
- Test::Simple
-
Basic utilities for writing tests.
テストを書くための基本的なユーティリティ
- Test::Tutorial
-
A tutorial about writing really basic tests
本当に基本的なテストを書くためのチュートリアル
- Text::Abbrev
-
Create an abbreviation table from a list
リストから略語テーブルを作成します
- Text::Balanced
-
Extract delimited text sequences from strings.
文字列からデリミタで区切られたテキスト列を抽出する
- Text::ParseWords
-
Parse text into an array of tokens or array of arrays
テキストを解析してトークンの配列や配列の配列にします
- Text::Soundex
-
Implementation of the Soundex Algorithm as Described by Knuth
Knuth による Soundex アルゴリズムの実装
- Text::Tabs
-
Expand and unexpand tabs per the unix expand(1) and unexpand(1)
UNIX の expand(1) や unexpand(1) のようにタブの展開やタブへの置換を行う
- Text::Wrap
-
Line wrapping to form simple paragraphs
単純なパラグラフに対する行ラッピング
- Thread
-
Manipulate threads in Perl (for old code only)
Perl のスレッドを操作する (古いコード専用)
- Thread::Queue
-
Thread-safe queues
スレッドセーフなキュー
- Thread::Semaphore
-
Thread-safe semaphores
スレッドセーフなセマフォ
- Thread::Signal
-
Start a thread which runs signal handlers reliably (for old code)
(古いコードのために) シグナルハンドラを信頼できるように実行されるスレッドを 開始する
- Thread::Specific
-
Thread-specific keys
スレッド固有のキー
- Tie::Array
-
Base class for tied arrays
tie された配列のためのベースクラス
- Tie::File
-
Access the lines of a disk file via a Perl array
ディスクのファイルの行に Perl の配列経由でアクセスする
- Tie::Handle
-
Base class definitions for tied handles
tie されたハンドルのためのベースクラスの定義
- Tie::Hash
-
Base class definitions for tied hashes
tie されたハッシュのためのベースクラス
- Tie::Memoize
-
Add data to hash when needed
必要なときにハッシュにデータを追加する
- Tie::RefHash
-
Use references as hash keys
ハッシュキーとしてリファレンスを使う
- Tie::Scalar
-
Base class definitions for tied scalars
tie されたスカラのための基底クラスの定義
- Tie::SubstrHash
-
Fixed-table-size, fixed-key-length hashing
テーブルサイズ固定、キー長固定のハッシング
- Time::HiRes
-
High resolution alarm, sleep, gettimeofday, interval timers
高精度の alarm, sleep, gettimeofday, 内部タイマー
- Time::Local
-
Efficiently compute time from local and GMT time
local と GMT 時刻からの効率良い計算
- Time::gmtime
-
By-name interface to Perl's built-in gmtime() function
Perl の組み込み関数 gmtime() に対する名前によるインターフェース
- Time::localtime
-
By-name interface to Perl's built-in localtime() function
Perl の組み込み関数 localtime() に対する名前によるインターフェース
- Time::tm
-
Internal object used by Time::gmtime and Time::localtime
Time::gmtime や Time::localtime によって使われる内部的なオブジェクト
- UNIVERSAL
-
Base class for ALL classes (blessed references)
すべてのクラス(bless されたリファレンス)のためのベースクラス
- Unicode::Collate
-
Unicode Collation Algorithm
Unicode 照合アルゴリズム
- Unicode::Normalize
-
Unicode Normalization Forms
Unicode 正規化形式
- Unicode::UCD
-
Unicode character database
Unicode 文字データベース
- User::grent
-
By-name interface to Perl's built-in getgr*() functions
Perl の組み込み関数 getgr*() に対する名前によるインターフェース
- User::pwent
-
By-name interface to Perl's built-in getpw*() functions
Perl の組み込み関数 getpw*() に対する名前によるインターフェース
- XS::APItest
-
Test the perl C API
perl C API をテストする
- XS::Typemap
-
Module to test the XS typemaps distributed with perl
perl と共に配布されている XS typemaps をテストするモジュール
- XSLoader
-
Dynamically load C libraries into Perl code
C ライブラリを Perl コードに動的に読み込む
To find out all modules installed on your system, including those without documentation or outside the standard release, just use the following command (under the default win32 shell, double quotes should be used instead of single quotes).
あなたの使っているシステムでインストールされているドキュメントの ないものや標準リリースにはないものを含めた すべての モジュールを 見つけ出すためには、以下のコマンドを使ってください (デフォルトの win32 のシェルでは、シングルクォートの代わりに ダブルクォートを使うべきです)。
% perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
no_chdir => 1 }, @INC'
(The -T is here to prevent '.' from being listed in @INC.) They should all have their own documentation installed and accessible via your system man(1) command. If you do not have a find program, you can use the Perl find2perl program instead, which generates Perl code as output you can run through perl. If you have a man program but it doesn't find your modules, you'll have to fix your manpath. See perl for details. If you have no system man command, you might try the perldoc program.
(ここでの -T は @INC に入っている一覧から '.' を取り除くためです。) これらはすべて独自のドキュメントをインストールして、システムの man(1) こまんどでアクセス可能なはずです。 もし find プログラムがないなら、代わりに perl で実行できる Perl コードを 生成する Perl の find2perl プログラムが使えます。 もし man プログラムはあるけれどもモジュールが見つからない場合は、 manpath を修正する必要があります。 詳細については perl を参照してください。 もしシステムの man コマンドがないなら、perldoc プログラムを 試してみてください。
Note also that the command perldoc perllocal
gives you a (possibly incomplete) list of the modules that have been further installed on your system. (The perllocal.pod file is updated by the standard MakeMaker install process.)
さらに、 perldoc perllocal
というコマンドで(不完全かもしれませんが) 追加でシステムにインストールされたモジュールの一覧が表示されます。 (perllocal.pod ファイルは標準の MakeMaker によるインストール処理で 更新されます。)
拡張モジュール¶
Extension modules are written in C (or a mix of Perl and C). They are usually dynamically loaded into Perl if and when you need them, but may also be linked in statically. Supported extension modules include Socket, Fcntl, and POSIX.
拡張モジュールは C(もしくは Perl と C の混合)で書かれます。 これらは普通は必要になったときに動的に Perl へロードされますが、 静的にリンクされる場合もあります。 サポートされている拡張モジュールには Socket, Fcntl, POSIX があります。
Many popular C extension modules do not come bundled (at least, not completely) due to their sizes, volatility, or simply lack of time for adequate testing and configuration across the multitude of platforms on which Perl was beta-tested. You are encouraged to look for them on CPAN (described below), or using web search engines like Alta Vista or Google.
多くの良く知られた C 拡張モジュールは、そのサイズであるとか 揮発性、あるいは単純に十分なテストをする時間がなかったとか Perl がベータテストされているプラットフォームでコンフィグレーションする 時間が無かったためにバンドルされていません(少なくとも完全には)。 こういったモジュールは、CPAN (後述します) や、 Alta Vista や Google といったウェブ検索エンジンを使って探すことを お勧めします。
CPAN¶
CPAN stands for Comprehensive Perl Archive Network; it's a globally replicated trove of Perl materials, including documentation, style guides, tricks and traps, alternate ports to non-Unix systems and occasional binary distributions for these. Search engines for CPAN can be found at http://www.cpan.org/
CPAN は Perl に関する統合的な保管ネットワークを意味しています; これは、世界中に複製されている Perl に関する事柄のグローバルな コレクションで、ドキュメント、スタイルガイド、罠と技、非 Unix システムへの 移殖とそのための一時的なバイナリ配布などを含みます。 CPAN の検索エンジンは http://www.cpan.org/ にあります。
Most importantly, CPAN includes around a thousand unbundled modules, some of which require a C compiler to build. Major categories of modules are:
もっとも重要なことは、CPAN には配布パッケージには バンドルされていないたくさんのモジュールも含まれています; その中にはビルドに C コンパイラが必要なものもあります。 以下に挙げるのは、モジュールの大まかな分類です。
-
Language Extensions and Documentation Tools
言語拡張と、ドキュメントツール
-
Development Support
開発サポート
-
Operating System Interfaces
オペレーティングシステムインターフェース
-
Networking, Device Control (modems) and InterProcess Communication
ネットワーク、デバイス制御(モデム)、プロセス間通信
-
Data Types and Data Type Utilities
データ型と、データ型ユーティリティ
-
Database Interfaces
データベースインターフェース
-
User Interfaces
ユーザーインターフェース
-
Interfaces to / Emulations of Other Programming Languages
他のプログラミング言語のエミュレーションや 他のプログラミング言語に対するインターフェース
-
File Names, File Systems and File Locking (see also File Handles)
ファイル名、ファイルシステム、ファイルのロッキング(ファイルハンドルも 参照してください)
-
String Processing, Language Text Processing, Parsing, and Searching
文字列処理、言語テキスト(Language Text)の処理、解析、検索
-
Option, Argument, Parameter, and Configuration File Processing
オプション、引数、パラメータ、ファイル処理のコンフィグレーション
-
Internationalization and Locale
国際化対応とロケール
-
Authentication, Security, and Encryption
認証、セキュリティ、暗号化
-
World Wide Web, HTML, HTTP, CGI, MIME
World Wide Web, HTML, HTTP, CGI, MIME
-
Server and Daemon Utilities
サーバーやデーモンのユーティリティ
-
Archiving and Compression
アーカイブと圧縮
-
Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
イメージ、Pixmap、ビットマップの操作、描画
-
Mail and Usenet News
メイルと Usenet ニュース
-
Control Flow Utilities (callbacks and exceptions etc)
制御フローユーティリティ(コールバックや例外など)
-
File Handle and Input/Output Stream Utilities
ファイルハンドルや入出力ストリームのユーティリティ
-
Miscellaneous Modules
その他のモジュール
The list of the registered CPAN sites as of this writing follows. Please note that the sorting order is alphabetical on fields:
登録されている CPAN サイトには以下に挙げるものがあります。 ソート順はフィールド毎にアルファベット順であることに注意してください:
Continent
|
|-->Country
|
|-->[state/province]
|
|-->ftp
|
|-->[http]
and thus the North American servers happen to be listed between the European and the South American sites.
従って、北アメリカサーバはヨーロッパと南アメリカのサイトの間に リストされてしまっています。
You should try to choose one close to you.
この中から最も近いものを選ぶのが良いでしょう。
アフリカ¶
- South Africa
-
http://ftp.rucus.ru.ac.za/pub/perl/CPAN/ ftp://ftp.rucus.ru.ac.za/pub/perl/CPAN/ ftp://ftp.is.co.za/programming/perl/CPAN/ ftp://ftp.saix.net/pub/CPAN/ ftp://ftp.sun.ac.za/CPAN/CPAN/
アジア¶
- China
-
http://cpan.linuxforum.net/ http://cpan.shellhung.org/ ftp://ftp.shellhung.org/pub/CPAN ftp://mirrors.hknet.com/CPAN
- Indonesia
-
http://mirrors.tf.itb.ac.id/cpan/ http://cpan.cbn.net.id/ ftp://ftp.cbn.net.id/mirror/CPAN
- Israel
-
ftp://ftp.iglu.org.il/pub/CPAN/ http://cpan.lerner.co.il/ http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/ ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
- Japan
-
ftp://ftp.u-aizu.ac.jp/pub/CPAN ftp://ftp.kddlabs.co.jp/CPAN/ ftp://ftp.ayamura.org/pub/CPAN/ ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/ http://ftp.cpan.jp/ ftp://ftp.cpan.jp/CPAN/ ftp://ftp.dti.ad.jp/pub/lang/CPAN/ ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
- Malaysia
-
http://cpan.MyBSD.org.my http://mirror.leafbug.org/pub/CPAN http://ossig.mncc.com.my/mirror/pub/CPAN
- Russian Federation
-
http://cpan.tomsk.ru ftp://cpan.tomsk.ru/
- Saudi Arabia
-
ftp://ftp.isu.net.sa/pub/CPAN/
- Singapore
-
http://CPAN.en.com.sg/ ftp://cpan.en.com.sg/ http://mirror.averse.net/pub/CPAN ftp://mirror.averse.net/pub/CPAN http://cpan.oss.eznetsols.org ftp://ftp.oss.eznetsols.org/cpan
- South Korea
-
http://CPAN.bora.net/ ftp://ftp.bora.net/pub/CPAN/ http://mirror.kr.FreeBSD.org/CPAN ftp://ftp.kr.FreeBSD.org/pub/CPAN
- Taiwan
-
ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN http://cpan.cdpa.nsysu.edu.tw/ ftp://cpan.cdpa.nsysu.edu.tw/pub/CPAN http://ftp.isu.edu.tw/pub/CPAN ftp://ftp.isu.edu.tw/pub/CPAN ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/ http://ftp.tku.edu.tw/pub/CPAN/ ftp://ftp.tku.edu.tw/pub/CPAN/
- Thailand
-
ftp://ftp.loxinfo.co.th/pub/cpan/ ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
中央アメリカ¶
- Costa Rica
-
http://ftp.ucr.ac.cr/Unix/CPAN/ ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
ヨーロッパ¶
- Austria
-
http://cpan.inode.at/ ftp://cpan.inode.at ftp://ftp.tuwien.ac.at/pub/CPAN/
- Belgium
-
http://ftp.easynet.be/pub/CPAN/ ftp://ftp.easynet.be/pub/CPAN/ http://cpan.skynet.be ftp://ftp.cpan.skynet.be/pub/CPAN ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
- Bosnia and Herzegovina
-
http://cpan.blic.net/
- Bulgaria
-
http://cpan.online.bg ftp://cpan.online.bg/cpan http://cpan.zadnik.org ftp://ftp.zadnik.org/mirrors/CPAN/ http://cpan.lirex.net/ ftp://ftp.lirex.net/pub/mirrors/CPAN
- Croatia
-
http://ftp.linux.hr/pub/CPAN/ ftp://ftp.linux.hr/pub/CPAN/
- Czech Republic
-
ftp://ftp.fi.muni.cz/pub/CPAN/ ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
- Denmark
-
http://mirrors.sunsite.dk/cpan/ ftp://sunsite.dk/mirrors/cpan/ http://cpan.cybercity.dk http://www.cpan.dk/CPAN/ ftp://www.cpan.dk/ftp.cpan.org/CPAN/
- Estonia
-
ftp://ftp.ut.ee/pub/languages/perl/CPAN/
- Finland
-
ftp://ftp.funet.fi/pub/languages/perl/CPAN/ http://mirror.eunet.fi/CPAN
- France
-
http://www.enstimac.fr/Perl/CPAN http://ftp.u-paris10.fr/perl/CPAN ftp://ftp.u-paris10.fr/perl/CPAN http://cpan.mirrors.easynet.fr/ ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/ ftp://ftp.club-internet.fr/pub/perl/CPAN/ http://fr.cpan.org/ ftp://ftp.lip6.fr/pub/perl/CPAN/ ftp://ftp.oleane.net/pub/mirrors/CPAN/ ftp://ftp.pasteur.fr/pub/computing/CPAN/ http://mir2.ovh.net/ftp.cpan.org ftp://mir1.ovh.net/ftp.cpan.org http://ftp.crihan.fr/mirrors/ftp.cpan.org/ ftp://ftp.crihan.fr/mirrors/ftp.cpan.org/ http://ftp.u-strasbg.fr/CPAN ftp://ftp.u-strasbg.fr/CPAN ftp://cpan.cict.fr/pub/CPAN/ ftp://ftp.uvsq.fr/pub/perl/CPAN/
- Germany
-
ftp://ftp.rub.de/pub/CPAN/ ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/ ftp://ftp.uni-erlangen.de/pub/source/CPAN/ ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN http://pandemonium.tiscali.de/pub/CPAN/ ftp://pandemonium.tiscali.de/pub/CPAN/ http://ftp.gwdg.de/pub/languages/perl/CPAN/ ftp://ftp.gwdg.de/pub/languages/perl/CPAN/ ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/ ftp://ftp.leo.org/pub/CPAN/ http://cpan.noris.de/ ftp://cpan.noris.de/pub/CPAN/ ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/ ftp://ftp.gmd.de/mirrors/CPAN/
- Greece
-
ftp://ftp.acn.gr/pub/lang/perl ftp://ftp.forthnet.gr/pub/languages/perl/CPAN ftp://ftp.ntua.gr/pub/lang/perl/
- Hungary
-
http://ftp.kfki.hu/packages/perl/CPAN/ ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
- Iceland
-
http://ftp.rhnet.is/pub/CPAN/ ftp://ftp.rhnet.is/pub/CPAN/
- Ireland
-
http://cpan.indigo.ie/ ftp://cpan.indigo.ie/pub/CPAN/ http://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN ftp://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN http://sunsite.compapp.dcu.ie/pub/perl/ ftp://sunsite.compapp.dcu.ie/pub/perl/
- Italy
-
http://cpan.nettuno.it/ http://gusp.dyndns.org/CPAN/ ftp://gusp.dyndns.org/pub/CPAN http://softcity.iol.it/cpan ftp://softcity.iol.it/pub/cpan ftp://ftp.unina.it/pub/Other/CPAN/CPAN/ ftp://ftp.unipi.it/pub/mirror/perl/CPAN/ ftp://cis.uniRoma2.it/CPAN/ ftp://ftp.edisontel.it/pub/CPAN_Mirror/ http://cpan.flashnet.it/ ftp://ftp.flashnet.it/pub/CPAN/
- Latvia
-
http://kvin.lv/pub/CPAN/
- Lithuania
-
ftp://ftp.unix.lt/pub/CPAN/
- Netherlands
-
ftp://download.xs4all.nl/pub/mirror/CPAN/ ftp://ftp.nl.uu.net/pub/CPAN/ ftp://ftp.nluug.nl/pub/languages/perl/CPAN/ http://cpan.cybercomm.nl/ ftp://mirror.cybercomm.nl/pub/CPAN ftp://mirror.vuurwerk.nl/pub/CPAN/ ftp://ftp.cpan.nl/pub/CPAN/ http://ftp.easynet.nl/mirror/CPAN ftp://ftp.easynet.nl/mirror/CPAN http://archive.cs.uu.nl/mirror/CPAN/ ftp://ftp.cs.uu.nl/mirror/CPAN/
- Norway
-
ftp://ftp.uninett.no/pub/languages/perl/CPAN ftp://ftp.uit.no/pub/languages/perl/cpan/
- Poland
-
ftp://ftp.mega.net.pl/CPAN ftp://ftp.man.torun.pl/pub/doc/CPAN/ ftp://sunsite.icm.edu.pl/pub/CPAN/
- Portugal
-
ftp://ftp.ua.pt/pub/CPAN/ ftp://perl.di.uminho.pt/pub/CPAN/ http://cpan.dei.uc.pt/ ftp://ftp.dei.uc.pt/pub/CPAN ftp://ftp.nfsi.pt/pub/CPAN http://ftp.linux.pt/pub/mirrors/CPAN ftp://ftp.linux.pt/pub/mirrors/CPAN http://cpan.ip.pt/ ftp://cpan.ip.pt/pub/cpan/ http://cpan.telepac.pt/ ftp://ftp.telepac.pt/pub/cpan/
- Romania
-
ftp://ftp.bio-net.ro/pub/CPAN ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/ ftp://ftp.lug.ro/CPAN ftp://ftp.roedu.net/pub/CPAN/ ftp://ftp.dntis.ro/pub/cpan/ ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.cpan.org/ http://cpan.ambra.ro/ ftp://ftp.ambra.ro/pub/CPAN ftp://ftp.dnttm.ro/pub/CPAN/ ftp://ftp.lasting.ro/pub/CPAN ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
- Russia
-
ftp://ftp.chg.ru/pub/lang/perl/CPAN/ http://cpan.rinet.ru/ ftp://cpan.rinet.ru/pub/mirror/CPAN/ ftp://ftp.aha.ru/pub/CPAN/ ftp://ftp.corbina.ru/pub/CPAN/ http://cpan.sai.msu.ru/ ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
- Slovakia
-
ftp://ftp.cvt.stuba.sk/pub/CPAN/
- Slovenia
-
ftp://ftp.arnes.si/software/perl/CPAN/
- Spain
-
http://cpan.imasd.elmundo.es/ ftp://ftp.rediris.es/mirror/CPAN/ ftp://ftp.ri.telefonica-data.net/CPAN ftp://ftp.etse.urv.es/pub/perl/
- Sweden
-
http://ftp.du.se/CPAN/ ftp://ftp.du.se/pub/CPAN/ http://mirror.dataphone.se/CPAN ftp://mirror.dataphone.se/pub/CPAN ftp://ftp.sunet.se/pub/lang/perl/CPAN/
- Switzerland
-
http://cpan.mirror.solnet.ch/ ftp://ftp.solnet.ch/mirror/CPAN/ ftp://ftp.danyk.ch/CPAN/ ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
- Turkey
-
http://ftp.ulak.net.tr/perl/CPAN/ ftp://ftp.ulak.net.tr/perl/CPAN ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
- Ukraine
-
http://cpan.org.ua/ ftp://cpan.org.ua/ ftp://ftp.perl.org.ua/pub/CPAN/ http://no-more.kiev.ua/CPAN/ ftp://no-more.kiev.ua/pub/CPAN/
- United Kingdom
-
http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/ http://cpan.teleglobe.net/ ftp://cpan.teleglobe.net/pub/CPAN http://cpan.mirror.anlx.net/ ftp://ftp.mirror.anlx.net/CPAN/ http://cpan.etla.org/ ftp://cpan.etla.org/pub/CPAN ftp://ftp.demon.co.uk/pub/CPAN/ http://cpan.m.flirble.org/ ftp://ftp.flirble.org/pub/languages/perl/CPAN/ ftp://ftp.plig.org/pub/CPAN/ http://cpan.hambule.co.uk/ http://cpan.mirrors.clockerz.net/ ftp://ftp.clockerz.net/pub/CPAN/ ftp://usit.shef.ac.uk/pub/packages/CPAN/
北アメリカ¶
- Canada
-
- Alberta
-
http://cpan.sunsite.ualberta.ca/ ftp://cpan.sunsite.ualberta.ca/pub/CPAN/
- Manitoba
-
http://theoryx5.uwinnipeg.ca/pub/CPAN/ ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
- Nova Scotia
-
ftp://cpan.chebucto.ns.ca/pub/CPAN/
- Ontario
-
ftp://ftp.nrc.ca/pub/CPAN/
- Mexico
-
http://cpan.azc.uam.mx ftp://cpan.azc.uam.mx/mirrors/CPAN http://www.cpan.unam.mx/ ftp://ftp.unam.mx/pub/CPAN http://www.msg.com.mx/CPAN/ ftp://ftp.msg.com.mx/pub/CPAN/
- United States
-
- Alabama
-
http://mirror.hiwaay.net/CPAN/ ftp://mirror.hiwaay.net/CPAN/
- California
-
http://cpan.develooper.com/ http://www.cpan.org/ ftp://cpan.valueclick.com/pub/CPAN/ http://www.mednor.net/ftp/pub/mirrors/CPAN/ ftp://ftp.mednor.net/pub/mirrors/CPAN/ http://mirrors.gossamer-threads.com/CPAN ftp://cpan.nas.nasa.gov/pub/perl/CPAN/ http://mirrors.kernel.org/cpan/ ftp://mirrors.kernel.org/pub/CPAN http://cpan-sj.viaverio.com/ ftp://cpan-sj.viaverio.com/pub/CPAN/ http://cpan.digisle.net/ ftp://cpan.digisle.net/pub/CPAN http://www.perl.com/CPAN/ http://www.uberlan.net/CPAN
- Colorado
-
ftp://ftp.cs.colorado.edu/pub/perl/CPAN/ http://cpan.four10.com
- Delaware
-
http://ftp.lug.udel.edu/pub/CPAN ftp://ftp.lug.udel.edu/pub/CPAN
- District of Columbia
-
ftp://ftp.dc.aleron.net/pub/CPAN/
- Florida
-
ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/ http://mirror.csit.fsu.edu/pub/CPAN/ ftp://mirror.csit.fsu.edu/pub/CPAN/ http://cpan.mirrors.nks.net/
- Indiana
-
ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/ http://cpan.netnitco.net/ ftp://cpan.netnitco.net/pub/mirrors/CPAN/ http://archive.progeny.com/CPAN/ ftp://archive.progeny.com/CPAN/ http://fx.saintjoe.edu/pub/CPAN ftp://ftp.saintjoe.edu/pub/CPAN http://csociety-ftp.ecn.purdue.edu/pub/CPAN ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
- Kentucky
-
http://cpan.uky.edu/ ftp://cpan.uky.edu/pub/CPAN/ http://slugsite.louisville.edu/cpan ftp://slugsite.louisville.edu/CPAN
- Massachusetts
-
http://mirrors.towardex.com/CPAN ftp://mirrors.towardex.com/pub/CPAN ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
- Michigan
-
ftp://cpan.cse.msu.edu/ http://cpan.calvin.edu/pub/CPAN ftp://cpan.calvin.edu/pub/CPAN
- Nevada
-
http://www.oss.redundant.com/pub/CPAN ftp://www.oss.redundant.com/pub/CPAN
- New Jersey
-
http://ftp.cpanel.net/pub/CPAN/ ftp://ftp.cpanel.net/pub/CPAN/ http://cpan.teleglobe.net/ ftp://cpan.teleglobe.net/pub/CPAN
- New York
-
http://cpan.belfry.net/ http://cpan.erlbaum.net/ ftp://cpan.erlbaum.net/ http://cpan.thepirtgroup.com/ ftp://cpan.thepirtgroup.com/ ftp://ftp.stealth.net/pub/CPAN/ http://www.rge.com/pub/languages/perl/ ftp://ftp.rge.com/pub/languages/perl/
- North Carolina
-
http://www.ibiblio.org/pub/languages/perl/CPAN ftp://ftp.ibiblio.org/pub/languages/perl/CPAN ftp://ftp.duke.edu/pub/perl/ ftp://ftp.ncsu.edu/pub/mirror/CPAN/
- Oklahoma
-
ftp://ftp.ou.edu/mirrors/CPAN/
- Oregon
-
ftp://ftp.orst.edu/pub/CPAN
- Pennsylvania
-
http://ftp.epix.net/CPAN/ ftp://ftp.epix.net/pub/languages/perl/ http://mirrors.phenominet.com/pub/CPAN/ ftp://mirrors.phenominet.com/pub/CPAN/ http://cpan.pair.com/ ftp://cpan.pair.com/pub/CPAN/ ftp://carroll.cac.psu.edu/pub/CPAN/
- Tennessee
-
ftp://ftp.sunsite.utk.edu/pub/CPAN/
- Texas
-
http://ftp.sedl.org/pub/mirrors/CPAN/ http://www.binarycode.org/cpan ftp://mirror.telentente.com/pub/CPAN http://mirrors.theonlinerecordstore.com/CPAN
- Utah
-
ftp://mirror.xmission.com/CPAN/
- Virginia
-
http://cpan-du.viaverio.com/ ftp://cpan-du.viaverio.com/pub/CPAN/ http://mirrors.rcn.net/pub/lang/CPAN/ ftp://mirrors.rcn.net/pub/lang/CPAN/ http://perl.secsup.org/ ftp://perl.secsup.org/pub/perl/ http://noc.cvaix.com/mirrors/CPAN/
- Washington
-
http://cpan.llarian.net/ ftp://cpan.llarian.net/pub/CPAN/ http://cpan.mirrorcentral.com/ ftp://ftp.mirrorcentral.com/pub/CPAN/ ftp://ftp-mirror.internap.com/pub/CPAN/
- Wisconsin
-
http://mirror.sit.wisc.edu/pub/CPAN/ ftp://mirror.sit.wisc.edu/pub/CPAN/ http://mirror.aphix.com/CPAN ftp://mirror.aphix.com/pub/CPAN
オセアニア¶
- Australia
-
http://ftp.planetmirror.com/pub/CPAN/ ftp://ftp.planetmirror.com/pub/CPAN/ ftp://mirror.aarnet.edu.au/pub/perl/CPAN/ ftp://cpan.topend.com.au/pub/CPAN/ http://cpan.mirrors.ilisys.com.au
- New Zealand
-
ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
- United States
-
http://aniani.ifa.hawaii.edu/CPAN/ ftp://aniani.ifa.hawaii.edu/CPAN/
南アメリカ¶
- Argentina
-
ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/ http://www.linux.org.ar/mirrors/cpan ftp://ftp.linux.org.ar/mirrors/cpan
- Brazil
-
ftp://cpan.pop-mg.com.br/pub/CPAN/ ftp://ftp.matrix.com.br/pub/perl/CPAN/ http://cpan.hostsul.com.br/ ftp://cpan.hostsul.com.br/
- Chile
-
http://cpan.netglobalis.net/ ftp://cpan.netglobalis.net/pub/CPAN/
RSYNC ミラー¶
www.linux.org.ar::cpan
theoryx5.uwinnipeg.ca::CPAN
ftp.shellhung.org::CPAN
rsync.nic.funet.fi::CPAN
ftp.u-paris10.fr::CPAN
mir1.ovh.net::CPAN
rsync://ftp.crihan.fr::CPAN
ftp.gwdg.de::FTP/languages/perl/CPAN/
ftp.leo.org::CPAN
ftp.cbn.net.id::CPAN
rsync://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
ftp.iglu.org.il::CPAN
gusp.dyndns.org::cpan
ftp.kddlabs.co.jp::cpan
ftp.ayamura.org::pub/CPAN/
mirror.leafbug.org::CPAN
rsync.en.com.sg::CPAN
mirror.averse.net::cpan
rsync.oss.eznetsols.org
ftp.kr.FreeBSD.org::CPAN
ftp.solnet.ch::CPAN
cpan.cdpa.nsysu.edu.tw::CPAN
cpan.teleglobe.net::CPAN
rsync://rsync.mirror.anlx.net::CPAN
ftp.sedl.org::cpan
ibiblio.org::CPAN
cpan-du.viaverio.com::CPAN
aniani.ifa.hawaii.edu::CPAN
archive.progeny.com::CPAN
rsync://slugsite.louisville.edu::CPAN
mirror.aphix.com::CPAN
cpan.teleglobe.net::CPAN
ftp.lug.udel.edu::cpan
mirrors.kernel.org::mirrors/CPAN
mirrors.phenominet.com::CPAN
cpan.pair.com::CPAN
cpan-sj.viaverio.com::CPAN
mirror.csit.fsu.edu::CPAN
csociety-ftp.ecn.purdue.edu::CPAN
For an up-to-date listing of CPAN sites, see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
最新の CPAN サイトリストは、 http://www.cpan.org/SITES や ftp://www.cpan.org/SITES を 参照してください。
モジュール: 作成、使用、濫用¶
(The following section is borrowed directly from Tim Bunce's modules file, available at your nearest CPAN site.)
(以下のセクションは、Tim Bunce のモジュールファイルからそのまま 借りてきたものです。 このモジュールファイルは直近の CPAN サイトで入手可能です。)
Perl implements a class using a package, but the presence of a package doesn't imply the presence of a class. A package is just a namespace. A class is a package that provides subroutines that can be used as methods. A method is just a subroutine that expects, as its first argument, either the name of a package (for "static" methods), or a reference to something (for "virtual" methods).
Perl はパッケージを使ったクラスを実装していますが、パッケージの存在が クラスの存在を意味するということではありません。 パッケージとは単なる名前空間です。 クラスはメソッドとして使うことのできるサブルーチンを持っている パッケージです。 メソッドとは、その最初の引数としてパッケージの名前("static" メソッドの場合)か 何かのリファレンス("virtual"メソッドの場合)をとるサブルーチンです。
A module is a file that (by convention) provides a class of the same name (sans the .pm), plus an import method in that class that can be called to fetch exported symbols. This module may implement some of its methods by loading dynamic C or C++ objects, but that should be totally transparent to the user of the module. Likewise, the module might set up an AUTOLOAD function to slurp in subroutine definitions on demand, but this is also transparent. Only the .pm file is required to exist. See perlsub, perltoot, and AutoLoader for details about the AUTOLOAD mechanism.
モジュールとは、(規則では) ファイルと同じ(ただし.pmはない)名前の クラスと、それに加えて export されたシンボルをフェッチするために 呼び出すことができるようなクラスにあるimport メソッドを提供するものです。 このモジュールは C や C++ オブジェクトから動的にロードされる メソッドを実装することもできますが、モジュールのユーザーに対して 総合的には透過であるべきです。 同様に、モジュールはオンデマンドでサブルーチン定義を slurp するような AUTOLOAD 関数をセットアップすることもできますが、これもまた透過であるべきです。 .pm ファイルだけが存在することを要求されます。 AUTOLOAD 機構に関する詳細は perlsub, perltoot, AutoLoader を 参照してください。
モジュール作成のガイドライン¶
-
Do similar modules already exist in some form?
似たようなモジュールが既にありませんか?
If so, please try to reuse the existing modules either in whole or by inheriting useful features into a new class. If this is not practical try to get together with the module authors to work on extending or enhancing the functionality of the existing modules. A perfect example is the plethora of packages in perl4 for dealing with command line options.
もしあれば、そのモジュール全体を使うか、新たなクラスに便利な機能を 継承して、再利用することを試みてください。 もしそれが現実的でないのなら、モジュールの拡張やすでにあるモジュールの 機能の拡張を、モジュールの作者と一緒に行うことを試みてください。 完全な例は、perl4 にあるコマンドラインオプションを取り扱うための パッケージです。
If you are writing a module to expand an already existing set of modules, please coordinate with the author of the package. It helps if you follow the same naming scheme and module interaction scheme as the original author.
もしあなたが既に存在しているモジュールのセットを拡張するモジュールを 書こうと言うのであれば、パッケージの作者と調整してください。 あなたが元の作者と同様の命名規則やモジュール相互作用規則に従うのならば、 それが助けになります。
-
Try to design the new module to be easy to extend and reuse.
新しいモジュールを、拡張や再利用しやすいようにデザインすることを 試みてください。
Try to
use warnings;
(oruse warnings qw(...);
). Remember that you can addno warnings qw(...);
to individual blocks of code that need less warnings.use warnings;
(またはuse warnings qw(...);
) を試みてください。 たくさんの警告がいらないコードブロックに対してはno warnings qw(...);
を追加できることも忘れないでください。Use blessed references. Use the two argument form of bless to bless into the class name given as the first parameter of the constructor, e.g.,:
bless されたリファレンスを使いましょう。 コンストラクタの第一引数として渡されたクラス名に bless するために、 二引数をとる bless を使いましょう。
sub new { my $class = shift; return bless {}, $class; }
or even this if you'd like it to be used as either a static or a virtual method.
あるいは、静的メソッドと仮想メソッドのいずれとしても使いたいので あればこうしましょう。
sub new { my $self = shift; my $class = ref($self) || $self; return bless {}, $class; }
Pass arrays as references so more parameters can be added later (it's also faster). Convert functions into methods where appropriate. Split large methods into smaller more flexible ones. Inherit methods from other modules if appropriate.
リファレンスとして配列を渡すので、より多くのパラメータを後で追加することが 可能です(そしてこのやり方は高速でもあります)。 関数を適切なメソッドへと変換します。 大きなメソッドを小さく、より柔軟なものに分割します。 適切であれば、他のモジュールからメソッドを継承します。
Avoid class name tests like:
die "Invalid" unless ref $ref eq 'FOO'
. Generally you can delete theeq 'FOO'
part with no harm at all. Let the objects look after themselves! Generally, avoid hard-wired class names as far as possible.die "Invalid" unless ref $ref eq 'FOO'
のようなクラス名の検査は しないようにしましょう。 一般的に、ほとんど何の障害もなしにeq 'FOO'
の部分を削除できます。 クラス名を直接表記することはできる限り避けるようにしましょう。Avoid
$r->Class::func()
where using@ISA=qw(... Class ...)
and$r->func()
would work (see perlbot for more details).@ISA=qw(... Class ...)
や$r->func()
が使えるところでは$r->Class::func()
を使うのは避けましょう (詳しくは perlbot を参照してください)。Use autosplit so little used or newly added functions won't be a burden to programs that don't use them. Add test functions to the module after __END__ either using AutoSplit or by saying:
autosplit を使うことはあまりなく、新たに追加した関数がそれを使わない プログラムに負担を掛けることはありません。 モジュールの __END__ の後にテスト関数を追加して AutoSplit を使うか 以下のようにします:
eval join('',<main::DATA>) || die $@ unless caller();
Does your module pass the 'empty subclass' test? If you say
@SUBCLASS::ISA = qw(YOURCLASS);
your applications should be able to use SUBCLASS in exactly the same way as YOURCLASS. For example, does your application still work if you change:$obj = new YOURCLASS;
into:$obj = new SUBCLASS;
?あなたのモジュールは 'empty subclass' テストを通過しますか?
@SUBCLASS::ISA = qw(YOURCLASS);
といったことをしているのなら、 あなたのアプリケーションは YOURCLASS と全く同じ方法で SUBCLASS を 使えるようにすべきです。 たとえば、$obj = new YOURCLASS;
を$obj = new SUBCLASS;
へと 変更してもあなたのアプリケーションは動作しますか?Avoid keeping any state information in your packages. It makes it difficult for multiple other packages to use yours. Keep state information in objects.
パッケージ中でなんらかのステート情報を保持しつづけることは避けましょう。 なぜなら、それによってあなたのパッケージを他の複数のパッケージが 使うことが難しくなるからです。 ステート情報はオブジェクトに置くようにしましょう。
Always use -w.
いつでも -w を使いましょう。
Try to
use strict;
(oruse strict qw(...);
). Remember that you can addno strict qw(...);
to individual blocks of code that need less strictness.use strict;
(もしくはuse strict qw(...);
) を試しましょう。 厳密さが余り必要でない独立したブロックにはno strict qw(...);
を 付加できるということを忘れないでください。Always use -w.
いつでも -w を使いましょう。
Follow the guidelines in the perlstyle(1) manual.
マニュアルページ perlstyle(1) にあるガイドラインに従って下さい。
Always use -w.
いつでも -w を使いましょう。
-
Some simple style guidelines
幾つかの単純なスタイルガイドライン
The perlstyle manual supplied with Perl has many helpful points.
Perl と一緒に提供されている perlstyle マニュアルには、多くの助けに なることが書かれています。
Coding style is a matter of personal taste. Many people evolve their style over several years as they learn what helps them write and maintain good code. Here's one set of assorted suggestions that seem to be widely used by experienced developers:
コーディングスタイルとは、個々人の好みの問題です。 多くの人々は自分自身のスタイルを、自分自身でプログラムを書いたり 良く書かれているプログラムを保守することを通じて学び、何年もかけて 改良しています。 以下に経験を積んだ開発者によって広く使われている提案の集まりを 示します。
Use underscores to separate words. It is generally easier to read $var_names_like_this than $VarNamesLikeThis, especially for non-native speakers of English. It's also a simple rule that works consistently with VAR_NAMES_LIKE_THIS.
語を区切るのにアンダースコアを使いましょう。 一般的に言って $var_names_like_this は $VarNamesLikeThis よりも読みやすく、 特に英語を母国語にしていない人にとってはそうです。 これはまた、VAR_NAMES_LIKE_THIS のように一貫して機能する 単純なルールでもあります。
Package/Module names are an exception to this rule. Perl informally reserves lowercase module names for 'pragma' modules like integer and strict. Other modules normally begin with a capital letter and use mixed case with no underscores (need to be short and portable).
パッケージやモジュールの名前はこの規則の例外です。 Perl は非公式にですが、小文字だけからなるモジュール名を integer や strict のような「プラグマ」モジュールのために予約しています。 そのほかのモジュールは大文字で始まって、アンダースコアを使わない大小文字の 並びを使います(短く、可搬性があるようにする必要があります)。
You may find it helpful to use letter case to indicate the scope or nature of a variable. For example:
大小文字の区別を、変数の性質だとかスコープを示すために便利に使えることに 気がついたかもしれません。 例えば:
$ALL_CAPS_HERE constants only (beware clashes with Perl vars) $Some_Caps_Here package-wide global/static $no_caps_here function scope my() or local() variables
$ALL_CAPS_HERE 定数のみ(Perl の変数とぶつからないか注意) $Some_Caps_Here パッケージを通じてのグローバル/スタティック $no_caps_here my() や local() で宣言された関数スコープの変数
Function and method names seem to work best as all lowercase. e.g.,
$obj->as_string()
.関数名やメソッド名は
$obj->as_string()
のようにすべて小文字に することが最善でしょう。You can use a leading underscore to indicate that a variable or function should not be used outside the package that defined it.
先頭のアンダースコアを、変数や関数をそれが定義されているパッケージの 外側では使うべきではないということを示すために 使うことができます。
-
Select what to export.
エクスポートするものを選びましょう。
Do NOT export method names!
メソッド名をエクスポートしては いけません!
Do NOT export anything else by default without a good reason!
ちゃんとした理由なしに、何かをデフォルトでエクスポートするような ことはしては いけません!
Exports pollute the namespace of the module user. If you must export try to use @EXPORT_OK in preference to @EXPORT and avoid short or common names to reduce the risk of name clashes.
エクスポートはモジュールのユーザーの名前空間を汚染します。 エクスポートしなければならないのであれば、@EXPORT よりは むしろ @EXPORT_OK を使い、短い名前や一般的な名前がぶつかるリスクを 軽減します。
Generally anything not exported is still accessible from outside the module using the ModuleName::item_name (or
$blessed_ref->method
) syntax. By convention you can use a leading underscore on names to indicate informally that they are 'internal' and not for public use.一般的には、エクスポートされていないものもモジュールの外側から アクセスすることが ModuleName::item_name (もしくは
$blessed_ref->method
) 構文を使うことで可能です。 慣例により、あなたは名前の先頭にあるアンダースコアをその名前が 「内部的」なものであって、パブリックな用途のためのものではないことを 非公式に示すのに使えます。(It is actually possible to get private functions by saying:
my $subref = sub { ... }; &$subref;
. But there's no way to call that directly as a method, because a method must have a name in the symbol table.)(プライベートな関数は
my $subref = sub { ... }; &$subref;
の ようにして得ることが実際には可能です。 しかし、メソッドとして直接呼び出す方法はありません。 なぜなら、メソッドはシンボルテーブルの中で名前を 持っていなければならないからです。)As a general rule, if the module is trying to be object oriented then export nothing. If it's just a collection of functions then @EXPORT_OK anything but use @EXPORT with caution.
一般的な規則として、モジュールがオブジェクト指向であろうとするなら、 なにもエクスポートしません。 モジュールが単に関数の集合であるなら、警告付きで @EXPORT を 使うのではなく、すべて @EXPORT_OK を使います。
-
Select a name for the module.
モジュールのための名前を選択しましょう。
This name should be as descriptive, accurate, and complete as possible. Avoid any risk of ambiguity. Always try to use two or more whole words. Generally the name should reflect what is special about what the module does rather than how it does it. Please use nested module names to group informally or categorize a module. There should be a very good reason for a module not to have a nested name. Module names should begin with a capital letter.
この名前は、可能な限り説明的で、厳密な、完全なものであるべきです。 曖昧さのリスクを避けましょう。 常に二つ以上の単語を使うことを考えましょう。 一般的には、名前はそのモジュールがどのようにしているかではなく、 何をしているかという特性を反映したものであるべきです。 ネストしたモジュールを、グループに非公式な名前を付けたりモジュールを 分類するために使ってください。 ネストした名前を持たないモジュールは、そのためのきちんとした 理由を持つべきです。 モジュール名は大文字で始まるべきです。
Having 57 modules all called Sort will not make life easy for anyone (though having 23 called Sort::Quick is only marginally better :-). Imagine someone trying to install your module alongside many others. If in any doubt ask for suggestions in comp.lang.perl.misc.
Sort と呼ばれる 57 のモジュールをすべて持つことは、簡単なことでは ありません(Sort::Quick と呼ばれる 23 についてのみ考えることが より想像しやすいでしょう :-)。 誰かがあなたのモジュールを他の多くのモジュールと一緒に インストールすることを想像してください。 なにか疑問があれば comp.lang.perl.misc で提案してみてください。
If you are developing a suite of related modules/classes it's good practice to use nested classes with a common prefix as this will avoid namespace clashes. For example: Xyz::Control, Xyz::View, Xyz::Model etc. Use the modules in this list as a naming guide.
関連したモジュール/クラスの一揃えを開発するのであれば、それは名前空間を 破壊することを防ぐような一般的なプリフィックスを持つネストした クラスを使うよい練習になるでしょう。 たとえば Xyz::Control, Xyz::View, Xyz::Model といったものです。 命名ガイドとしてこのリストにあるモジュールを使ってください。
If adding a new module to a set, follow the original author's standards for naming modules and the interface to methods in those modules.
ある集合に新しいモジュールを追加するのなら、元の作者の標準に従った モジュールのネーミングやメソッドのインターフェースを使ってください。
If developing modules for private internal or project specific use, that will never be released to the public, then you should ensure that their names will not clash with any future public module. You can do this either by using the reserved Local::* category or by using a category name that includes an underscore like Foo_Corp::*.
もしプライベートな内部やプロジェクト固有の用途のために開発中のモジュールが 決して公開されることがないなら、将来の公開モジュールと名前が 衝突しないことを確実にしてください。 これは、予約済みの Local::* カテゴリを使うか、 Foo_Corp::* のように 名前にした戦を含めることで行えます。
To be portable each component of a module name should be limited to 11 characters. If it might be used on MS-DOS then try to ensure each is unique in the first 8 characters. Nested modules make this easier.
モジュールの各コンポーネントを可搬性あるものにするために、名前は 11 文字以下に制限すべきでしょう。 MS-DOS 上で使われる可能性のあるものであれば、各コンポーネントが 最初の 8 文字で区別できるようにしてください。 ネストモジュールはこれを簡単にしてくれます。
-
Have you got it right?
正しくやりましたか?
How do you know that you've made the right decisions? Have you picked an interface design that will cause problems later? Have you picked the most appropriate name? Do you have any questions?
あなたが正しい判断をしたと、どのように知りますか? 後で問題を引き起こすようなインターフェースデザインを取り除きましたか? 最も適切な名前を選択しましたか? なにか質問はありませんか?
The best way to know for sure, and pick up many helpful suggestions, is to ask someone who knows. Comp.lang.perl.misc is read by just about all the people who develop modules and it's the best place to ask.
確実に知る方法、そして多くの助けになる提案をとりあげる最善の方法とは、 その方法を知っている人に訊くということです。 comp.lang.perl.misc はモジュールを開発した人全てが読んでいて、 尋ねる場所には最も良い場所です。
All you need to do is post a short summary of the module, its purpose and interfaces. A few lines on each of the main methods is probably enough. (If you post the whole module it might be ignored by busy people - generally the very people you want to read it!)
あなたがする必要があるのは、モジュールの手短な要約、その目的と インターフェースを投稿することです。 主なメソッドのそれぞれについて二、三行あれば十分でしょう (あなたがモジュール全体を投稿したら、忙しい人 - つまりあなたが 一番読んで欲しい人達は無視してしまうかもしれません!)
Don't worry about posting if you can't say when the module will be ready - just say so in the message. It might be worth inviting others to help you, they may be able to complete it for you!
モジュールがいつ完成するか言えなくても投稿することを 恐がることはありません。 メッセージの中でそう言えば良いのです。 誰かがあなたを助けて、完成できるようにしてくれるかもしれないのです!
-
README and other Additional Files.
README とその他の付加的なファイル。
It's well known that software developers usually fully document the software they write. If, however, the world is in urgent need of your software and there is not enough time to write the full documentation please at least provide a README file containing:
ソフトウェアの開発者は、通常自分が作ったソフトウェアの完全な ドキュメントを作成します。 しかし、世界があなたのソフトウェアすぐにでも必要にして、ドキュメントを 作成するのに十分な時間が無かったとしても、最低限 README ファイルを 含めるようにしてください。
-
A description of the module/package/extension etc.
モジュール/パッケージ/拡張などの記述。
-
A copyright notice - see below.
著作権表記 - 後述します。
-
Prerequisites - what else you may need to have.
前提条件 - 必要になるようなこと、もの。
-
How to build it - possible changes to Makefile.PL etc.
ビルドの方法 - 可能な Makefile.PL などの変更。
-
How to install it.
インストールの仕方。
-
Recent changes in this release, especially incompatibilities
今回のリリースであった変更点、特に非互換なもの
-
Changes / enhancements you plan to make in the future.
あなたが将来に向けて考えている変更や拡張。
If the README file seems to be getting too large you may wish to split out some of the sections into separate files: INSTALL, Copying, ToDo etc.
README ファイルが非常に大きくなりそうなら、それを INSTALL, Copying, ToDo などのセクションごとのファイルに分割したいと考えるかもしれません。
-
Adding a Copyright Notice.
著作権表記の追加。
How you choose to license your work is a personal decision. The general mechanism is to assert your Copyright and then make a declaration of how others may copy/use/modify your work.
あなたの成果にどのようにライセンスを選択するかは個人的な決定事項です。 一般的な仕組みは、あなたの著作権を表明し、あなたの成果をどのように 他人がコピーしたり、使ったり、変更したりできるかを宣言するものです。
Perl, for example, is supplied with two types of licence: The GNU GPL and The Artistic Licence (see the files README, Copying, and Artistic, or perlgpl and perlartistic). Larry has good reasons for NOT just using the GNU GPL.
たとえば Perl では、二種類のライセンスを提供しています: GNU GPL と Artistic Licence (README、Copying、Artistic といったファイルや perlgpl と perlartistic を参照してください)がそれです。 Larry は単に GNU GPL だけを使わないちゃんとした理由を持っています。
My personal recommendation, out of respect for Larry, Perl, and the Perl community at large is to state something simply like:
Larry や Perl、Perl コミュニティに対する尊重を外しての私の個人的な お勧めは、以下の様な単純な文章です。
Copyright (c) 1995 Your Name. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
This statement should at least appear in the README file. You may also wish to include it in a Copying file and your source files. Remember to include the other words in addition to the Copyright.
この文言が少なくとも README ファイルになければなりません。 これを、Copying というファイルやソースファイルに含めることもできます。 著作権に付け加える他の言葉を忘れないでください。
-
Give the module a version/issue/release number.
モジュールに version/issue/release 番号を付ける。
To be fully compatible with the Exporter and MakeMaker modules you should store your module's version number in a non-my package variable called $VERSION. This should be a floating point number with at least two digits after the decimal (i.e., hundredths, e.g,
$VERSION = "0.01"
). Don't use a "1.3.2" style version. See Exporter for details.Exporter や MakeMaker モジュールに対する完全な互換性を持つために、 あなたは自分のモジュールのバージョン番号を、my ではないパッケージ変数 $VERSION に格納すべきです。 これは小数点の後に少なくとも二桁の数字を持った浮動小数点で あるべきものです(例:
$VERSION = "0.01"
)。 "1.3.2" という形式のバージョンは使ってはいけません。 詳しくは、Exporter を参照してください。It may be handy to add a function or method to retrieve the number. Use the number in announcements and archive file names when releasing the module (ModuleName-1.02.tar.Z). See perldoc ExtUtils::MakeMaker.pm for details.
番号を取得するための関数やメソッドを追加するのが良いでしょう。 この番号を、アナウンスとモジュールをリリースするときのアーカイブ ファイル名 (ModuleName-1.02.tar.Z) に使います。 詳しくは ExtUtils::MakeMaker.pm を参照してください。
-
How to release and distribute a module.
モジュールのリリースと配布の仕方。
It's good idea to post an announcement of the availability of your module (or the module itself if small) to the comp.lang.perl.announce Usenet newsgroup. This will at least ensure very wide once-off distribution.
あなたの作ったモジュールが使えるということのアナウンス(モジュールが 小さければモジュールそれ自身)を Usenet ニューズグループの comp.lang.perl.announce に投稿することは良い考えです。 これは、少なくとも広い範囲に渡る配布を保証するでしょう。
If possible, register the module with CPAN. You should include details of its location in your announcement.
可能であれば、モジュールを CPAN に登録しましょう。 その場所の詳細をあなたのアナウンスに含めるべきでしょう。
Some notes about ftp archives: Please use a long descriptive file name that includes the version number. Most incoming directories will not be readable/listable, i.e., you won't be able to see your file after uploading it. Remember to send your email notification message as soon as possible after uploading else your file may get deleted automatically. Allow time for the file to be processed and/or check the file has been processed before announcing its location.
ftp アーカイブについて注意すべき幾つかのこと: バージョン番号を含んだ 長い説明的な名前を使ってください。 ほとんどの incoming ディレクトリは readable/listable になってはいないので、 あなたはアップロードした後でそのファイルを見ることができないでしょう。 アップロードしたら、できるだけ早く email による通知を送ることを 忘れないでください。 そうしなければあなたのファイルは自動的に削除されてしまうかもしれません。 ファイルの場所をアナウンスする前に、あなたのファイルが 処理されたりチェックされるのに時間が掛かることを考慮してください。
FTP Archives for Perl Modules:
Perl モジュールのための FTP アーカイブ:
Follow the instructions and links on:
手順に従って以下へリンクします:
http://www.cpan.org/modules/00modlist.long.html http://www.cpan.org/modules/04pause.html
or upload to one of these sites:
あるいは以下のサイトのいずれかにアップロードします:
https://pause.kbx.de/pause/ http://pause.perl.org/pause/
and notify <[email protected]>.
そして <[email protected]> に通知します。
By using the WWW interface you can ask the Upload Server to mirror your modules from your ftp or WWW site into your own directory on CPAN!
WWW インターフェースを使うことによって、あなたのモジュールをあなたの ftp サイトや WWW サイトから CPAN のあなたのディレクトリへ ミラーリングできるかアップロードサーバーに尋ねることができます!
Please remember to send me an updated entry for the Module list!
モジュールリストの更新されたエントリーを私に知らせることを 忘れないでください!
-
Take care when changing a released module.
リリースされたモジュールを変更するときには注意すること。
Always strive to remain compatible with previous released versions. Otherwise try to add a mechanism to revert to the old behavior if people rely on it. Document incompatible changes.
常に以前にリリースしたバージョンとの互換性を保つように努力すること。 あるいは、ユーザーが古い振る舞いに頼っているのであれば、 そういった振る舞いを行うような機構を追加すること。 非互換な修正をドキュメント化すること。
-
Perl4 のライブラリスクリプトをモジュールに変換するガイドライン¶
-
There is no requirement to convert anything.
すべてを変換する必要はありません。
If it ain't broke, don't fix it! Perl 4 library scripts should continue to work with no problems. You may need to make some minor changes (like escaping non-array @'s in double quoted strings) but there is no need to convert a .pl file into a Module for just that.
もし不具合がないのなら、修正してはいけません! Perl 4 のライブラリにあったスクリプトは問題なしに動作するはずなのです。 幾つかのちょっとした変更(ダブルクォーテーションに囲まれた文字列中の、 配列を示すものではない @ をエスケープするとか)を行う必要があるかも しれませんが、.pl ファイルをモジュールへと変換する必要性はありません。
-
Consider the implications.
連携を考慮しましょう。
All Perl applications that make use of the script will need to be changed (slightly) if the script is converted into a module. Is it worth it unless you plan to make other changes at the same time?
そのスクリプトを使っている Perl アプリケーションのすべては、 スクリプトがモジュールへと変更されたならばアプリケーションも変更する 必要があるでしょう。 他の変更を同時に行うことをあなたが考えていないのなら、 それは価値あることでしょうか?
-
Make the most of the opportunity.
多くの機会を得よう。
If you are going to convert the script to a module you can use the opportunity to redesign the interface. The guidelines for module creation above include many of the issues you should consider.
スクリプトをモジュールに変換しようというのであれば、あなたはそれを インターフェースの再デザインの機会として使うことができます。 上述した Guidelines for Module Creation にはあなたが考慮すべき事柄の 多くが含まれています。
-
The pl2pm utility will get you started.
まず pl2pm ユーティリティから始めましょう。
This utility will read *.pl files (given as parameters) and write corresponding *.pm files. The pl2pm utilities does the following:
このユーティリティは *.pl ファイル(引数として与えます)を読み込み、 それに対応する *.pm ファイルを出力します。 pl2pm ユーティリティは以下のことを行います。
-
Adds the standard Module prologue lines
標準的なモジュールプロローグ行の付加
-
Converts package specifiers from ' to ::
パッケージ指定子の ' から :: への変更
-
Converts die(...) to croak(...)
die(...) から croak() への変更
-
Several other minor changes
幾つかのちょっとした変更
Being a mechanical process pl2pm is not bullet proof. The converted code will need careful checking, especially any package statements. Don't delete the original .pl file till the new .pm one works!
pl2pm の機械的な処理は完全ではありません。 変換されたコードは、特にパッケージ文についてよくチェックしておく必要が あるでしょう。 新しい .pm がきちんと動くようになるまでは、元の .pl ファイルを 削除してはいけません!
-
アプリケーションプログラムの再利用のためのガイドライン¶
-
Complete applications rarely belong in the Perl Module Library.
完全なアプリケーションはほとんど Perl モジュールライブラリに 属していません。
-
Many applications contain some Perl code that could be reused.
多くのアプリケーションは幾つかの再利用可能な Perl コードを 含んでいます。
Help save the world! Share your code in a form that makes it easy to reuse.
世界を救うことに協力しましょう! あなたのプログラムを再利用が簡単なようにする形式で共有しましょう。
-
Break-out the reusable code into one or more separate module files.
再利用可能なプログラムを独立したモジュールファイルに分けます。
-
Take the opportunity to reconsider and redesign the interfaces.
インターフェースの再検討と再設計の機会を持ちましょう。
-
In some cases the 'application' can then be reduced to a small
一部の“アプリケーション”は、 再利用可能なモジュールのトップにある
fragment of code built on top of the reusable modules. In these cases the application could invoked as:
小さなコード片に縮小することができます。 この場合、アプリケーションは以下の様に起動することが可能です。
% perl -e 'use Module::Name; method(@ARGV)' ...
or
あるいは
% perl -mModule::Name ... (in perl5.002 or higher)
注意¶
Perl does not enforce private and public parts of its modules as you may have been used to in other languages like C++, Ada, or Modula-17. Perl doesn't have an infatuation with enforced privacy. It would prefer that you stayed out of its living room because you weren't invited, not because it has a shotgun.
C++、Ada、Modula-17 といった他の言語のようにモジュールの一部分を private にするとか、public にするといったことを Perl は 強制するようなことはありません。 Perl はプライバシーを強制することに夢中になることはしません。 あなたがリビングルームの外に留まっているのはあなたが 招待されていないからで、 ショットガンを持っているからではないからです。
The module and its user have a contract, part of which is common law, and part of which is "written". Part of the common law contract is that a module doesn't pollute any namespace it wasn't asked to. The written contract for the module (A.K.A. documentation) may make other provisions. But then you know when you use RedefineTheWorld
that you're redefining the world and willing to take the consequences.
モジュールとそのユーザーは不文律の一部として、契約を交わしています。 そして、その一部は「書かれて」います。 不文律契約の一部としては、モジュールが、委譲されていない名前空間を 汚染しないことです。 モジュールのために書かれた契約(ドキュメント)は、異なる規約を 作ることが可能です。 しかしその後、あなたが世界を再定義 (redefining the world) する use RedefineTheWorld
を使ったときにそれによって起こる結果を 享受することを知ることになるでしょう。