ブログトップ 記事一覧 ログイン 無料ブログ開設

サンプルコードによるPerl入門 - Perlプログラミングの基礎から応用まで

サンプルが豊富なPerlの入門サイトです。if文、for文、配列、ハッシュ、正規表現を、丁寧に解説。Webサイトの作成方法、便利なPerlの関数とモジュールの紹介もあり。さらに、C言語を使った、Perlの拡張モジュールを作成する講座もあり。初級から上級まで、Perlのすべてが学べます。Twitter登録で、最新のPerl情報が得られます。

2009-02-08

モジュールの読み込みの仕組みを理解する

 モジュールの読み込みとは、単にファイルをPerlのソースコードとして読み込むことです。読み込まれたファイルはコンパイルされ、実行されます。

もっとも原始的なモジュール読み込み方法 do関数

 do関数は、どのコードを読んでももうほとんど見られない関数です。do関数は、ファイルをPerlのソースコードとして読み込むための関数です。

 以下のソースコードと同じディレクトリに、Sample.pmを配置して、実行してましょう。Sample.pmが読み込まれて、その中に含まれる one関数が使用できるようになります。

do "Sample.pm";

# 1 と表示される
print one;
Sample.pm
sub one { return 1 }

1;

 読み込まれるファイルの末尾には、1と書く必要があることに注意してください。少し面倒で、間違いやすいですが、読み込まれるファイルの末尾は真の値を記述する必要があるというルールがあるので従う必要があります。

標準的なモジュール読み込み方法 require関数

 require関数は、do関数を進化させたものです。require関数はdoと同じようにファイルをPerlのソースコードとして読み込みことに加えて、さらに便利な機能があります。

  • 一度読み込んだモジュールについては、2度目は読みこまない。
  • Perlのライブラリのパスからモジュールを検索する。
  • モジュール名の指定だけでモジュールの読み込みができる。

この2つがdoと比較した場合の、requireの利点です。

 2回読み込まないということは、速度的な面で有利です。Perlのライブラリのパスからモジュールを検索してくれるということは、モジュールのファイル名(絶対パス)について気にする必要がなくなるということです。

 モジュール名の指定で読み込めることで、モジュールの読み込みの記述を簡潔にできます。以下の記述で、Perlのライブラリのパスから、Carp.pmというモジュールを読み込みます。

require Carp;

モジュールの検索パス @INC

 モジュールの検索パスは、特殊変数 @INC に格納されています。コマンドラインから

print join( "\n",@INC );

で見ることができます。たとえば、以下のような感じで出力されます。require関数はこのライブラリのパスからモジュールを検索します。

/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl
/usr/lib/perl5/5.8.8

読み込まれたモジュールの確認 %INC

 あるモジュールが読みこまれているかどうかは、特殊変数 %INC を調べることで確認することができます。Data::Dumperモジュールで、%INCの内容を出力してみます。

use Data::Dumper 'Dumper';
print Dumper(\@INC);

 たとえば以下のように、読み込んだモジュールのファイル名とその絶対パスの組が表示されます。require関数はこの情報を使って、読み込まれたかどうかの確認をしています。

%INC = (
         'warnings/register.pm' => 'C:/Perl/5.8.8.822/lib/warnings/register.pm',

         'bytes.pm' => 'C:/Perl/5.8.8.822/lib/bytes.pm',
         'XSLoader.pm' => 'C:/Perl/5.8.8.822/lib/XSLoader.pm',
         'Carp.pm' => 'C:/Perl/5.8.8.822/lib/Carp.pm',
         'Exporter.pm' => 'C:/Perl/5.8.8.822/lib/Exporter.pm',
         'strict.pm' => 'C:/Perl/5.8.8.822/lib/strict.pm',
         'warnings.pm' => 'C:/Perl/5.8.8.822/lib/warnings.pm',
         'overload.pm' => 'C:/Perl/5.8.8.822/lib/overload.pm',
         'Data/Dumper.pm' => 'C:/Perl/5.8.8.822/lib/Data/Dumper.pm'
       );

もっとも標準的なモジュールの読み込み方法 use

 もっとも標準的なモジュールの読み込み方法はuseを使う方法です。useはコンパイルのときに、requireを実行し、さらにimportメソッドを実行して、関数をインポートします。

use Carp 'croak';


Perl逆引き辞典

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/perlcodesample/20090208/1232890021
リンク元