blog20100901

2013/08/20 - プログラミング言語 Perl にまつわる etc. - Perl monger
参考 : perldoc, perldoc.jp, search.cpan.org, perldoc.perl.org ...
「 初めての Perl 第 6 版 」(オライリー・ジャパン発行 ISBN978-4-87311-567-2) 」
「 続・初めての Perl 改訂版 」(オライリー・ジャパン発行 ISBN4-87311-305-9) 」
「 Effective Perl 第 2 版 」(翔泳社発行 ISBN978-4-7981-3981-4) 」 ... etc,.

Perl Perl_1

Perl 「 モジュール 」(0x8e)

Perl 「 モジュール 」(0x8e)

目次 - Perl Index



Theme



Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x8e 回。

Perl 「 モジュール 」( module ) について。




モジュールとは



英語のモジュール ( module ) は、「 基本単位 」や「 測定基準 」を意味します。また、ある規格に沿って作成された交換可能な「 構成部分 」「 個別の要素 」という意味も持ちます。

つまり、Perl のモジュールは Perl の規格に沿ってコーディングされた拡張機能を意味します。


2 種類の Perl モジュール



Perl には、大きく分けて 2 種類のモジュールがあります。

1 つは予め Perl に付属してくるモジュールです。これらは利用する Perl のバージョンによって変わります。

もう 1 つは、CPAN ( Comprehensive Perl Archive Network ) で公開されているモジュールです。これらは、Perl ユーザが必要に応じて任意にインストールします。


Perl 付属モジュールを確認する



Unix ライクなシステムを利用している場合は、シェル上で次のコマンドを実行することで現在 Perl にインストールされているモジュールを確認することが出来ます。


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


Perl モジュールの検索には、システムコマンド「 find 」を利用しています。

find には検索対象とするシステムパスを引数として渡す必要がありますが、ここではコマンド perl と -e オプションをつかって、「 @INC 」という特殊な配列変数中身を渡しています。

@INC - perldoc.jp によれば「 @INC 」は、

配列 @INC には、do EXPR, require, use によってライブラリファイルを 探すときに評価する場所のリストが納められています。


とあります。

つまりそれは、Perl モジュールをプログラムに組み入れる ( INClude ) する際に読み込むシステムパスのリストです。

リストに含まれるシステムパスの中から、find のオプション「 -name 」を利用して「 .pm 」で終わるファイルを探し出して表示している訳です。

確認したいモジュールの名前が分かっているなら、上記コマンドに続けて「 | grep module_name 」をタイプすれば、インストールの有無が分かります。

また、以下の Web ページでは、まったく別の方法を利用したモジュールの確認や、モジュールバージョンの確認スクリプトが紹介されています。

perl インストールされているモジュールの調べ方 - 手順書.com

Perl のやり方は何事も 1 つではない ( There is more than one way to do it ) ので、まだまだ別のやり方もあるはずです。


Drive Network の @INC



僕が利用しているレンタルサーバ「 Drive Network 」では、SSH 接続を解放しているので上記コマンドを利用することが出来ます。

また、コマンド perl の部分だけを実行すれば、@INC 内のパスを確認することが出来ます。

試しに、Drive Network 標準の @INC を確認してみます。


$ perl -e 'print "@INC"'
/usr/local/lib/perl5/5.8.9/BSDPAN /usr/local/lib/perl5/site_perl/5.8.9/mach /usr/local/lib/perl5/site_perl/5.8.9 /usr/local/lib/perl5/5.8.9/mach /usr/local/lib/perl5/5.8.9 .


以下のサイトでは、もう少し見やすい出力方法が示されています。

Perlモジュールが入っているか調べる2つの簡単なやり方 - あれだよ、あれ……なんだっけ?

つまり、こういうことです。


$ perl -e 'map{ print "$_\n"; } @INC;'
/usr/local/lib/perl5/5.8.9/BSDPAN
/usr/local/lib/perl5/site_perl/5.8.9/mach
/usr/local/lib/perl5/site_perl/5.8.9
/usr/local/lib/perl5/5.8.9/mach
/usr/local/lib/perl5/5.8.9
.


え、だったら for ( foreach ) でも良いんじゃないかと思い試してみると、


$ perl -e 'for ( @INC ) {print "$_\n" ; }'
/usr/local/lib/perl5/5.8.9/BSDPAN
/usr/local/lib/perl5/site_perl/5.8.9/mach
/usr/local/lib/perl5/site_perl/5.8.9
/usr/local/lib/perl5/5.8.9/mach
/usr/local/lib/perl5/5.8.9
.


良かったです。

それもそのはず、なんてことはない。

これらは、配列変数の中身に改行を付加して出力しているだけなのです。


0x8e -> 0x8f へ



次回はいよいよ CPAN に迫ります。

参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。

目次 - Perl Index

















同じカテゴリー(Perl)の記事
 Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228) (2023-10-11 23:49)
 Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227) (2023-05-26 15:41)
 Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226) (2023-05-19 17:05)
 Perl mp2 翻訳 テンプレートシステムの選択 (d225) (2022-08-15 22:23)
 Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224) (2022-06-15 20:43)
 Perl mp2 翻訳 チュートリアル (d223) (2022-06-15 20:42)

Llama
リャマ
TI-DA
てぃーだブログ
プロフィール
セラ (perlackline)
セラ (perlackline)
QRコード
QRCODE
オーナーへメッセージ

PAGE TOP ▲