モジュールの基本

1度書いたコードは再利用しなきゃもったいないですよね。同じ処理を何度も書いていたり、コピーアンドペーストしていたら、手間がかかりすぎます。
そういった再利用しそうなコードを書く時、Perlでは「モジュール」と呼ばれるファイルを作るそうです。コードをモジュールにする事で再利用しやすくなります。
ファイルの先頭で「package」を使って名前空間を定義して、ファイル名をそのパッケージ名と同じにします。また、普通のPerlスクリプトと区別するために拡張子には「.pm」を使います。

package Palmo;

というパッケージを宣言したなら、「Palmo.pm」として保存するわけですね。
また、パッケージ名に階層表現「::」が含まれている場合は、フォルダで階層を再現します。

package Palmo::Study::Perl;

と書いた場合、ファイルは「Palmo\Study\Perl.pm」(Windowsの場合)のように「Palmo\Study\」フォルダの中に「Perl.pm」として保存する事になります。
モジュールを使いたい場合、「use」を使って以下のように書きます。

use Palmo;
use Palmo::Study::Perl;

この場合、「Palmoモジュール」と「Palmo::Study::Perlモジュール」が利用できるようになります。利用者はモジュールの中身については何も知らなくてよく、「use すればどのような機能が使えるようになるか」だけを知ってれば良いわけですね。
use のかわりに require を使う事もできます。use と require の違いは、use がスクリプトコンパイル時にモジュールが読み込まれるのに対し、require は実行時に読み込まれる、でしょうか。ラクダ本 第三版「プログラミングPerl VOL.1」 p351 には

一般に、requireよりも、useを使うほうが良い。なぜなら、useはコンパイル時にモジュールを読みに行くので、より早く間違いに気付くからだ。

と書かれていました。なるほど。
また、「use Palmo;」と書かれた時にPerlはPalmo.pmを探すわけですが、モジュールファイルを探すフォルダ(インクルードパス)は @INC に入っているとの事。
perl コマンドに「-e」オプションを使えば、1行スクリプトを実行できるので、@INC を表示してみました。

D:\dev\perl>perl -e "print join \"\n\", @INC;"
C:/perl/lib
C:/perl/site/lib
.

「C:\perl\」に Perl をインストールしたので、「C:\perl\lib」と「C:\perl\site\lib」、それにカレントフォルダを表す「.」がインクルードパスになっています。
モジュールを作った時はこの中のどれかに置けばいいわけですね。