CGI-BBS > CGI > Perl > Perlで、サブルーチンを外部(別)ファイルとして設置したい。


カレッヂ
カレッヂ


質問者 yakura  投稿日 7/10(水) 18:45:33
Perlでサブルーチンを同じファイルに定義をすることは通常良く行いますが、
サブルーチンの部分を別(外部)ファイルとして定義し、
メインのファイルから途中で別のサブファイルを実行し、
またメインのファイルに戻って結果を出すにはどのようにすればいいのでしょうか?
どなたか教えて下さい。宜しくお願い致します。

プロバイダ参照:
サーバのOS:(未選択)
パソコンのOS:(未選択)
エディタ:
FTPソフト:
サーバ移転:していない
改造:(未選択)
CGI習熟度:(未選択)

回答者 みけ  [削除]  投稿日 7/10(水) 21:21:05
そのサブ関数の定義されているファイルを「sub.pl」とします。

あとはメインルーチン側で
require 'sub.pl';
として普通に関数呼び出しすればいいです。

あとsub.plの1行目に
package foo;
と書けば、関数や変数がパッケージ化されます。

この場合のメインルーチンでの関数呼び出しは
&foo::baa();
のような感じになります。

複数の*.plをrequireする場合などは、どの関数がどのplから呼び出されれているか
わかって便利です。
本当はもっと別の意味がありますが最初はこの程度でいいんじゃないでしょうか。

注意点は、sub.plの一番最後の行に
1;
と書くことです。

これは戻り値が真であるという意味です。
おまじない程度に覚えておいて下さい。

質問者 yakura  [削除]  投稿日 7/10(水) 21:27:08
適確なご回答ありがとうございました。
非常に助かります。今後とも宜しくお願い致します。
回答者 みけ  [削除]  投稿日 7/10(水) 21:27:27
言い忘れましたが、わたしのやり方はPerl4以前の古いやり方です。
今時requireなんて使いませんからね。
そもそも「*.pl」というファイルはPerl4以前の古いものとの互換性で残っている
だけです。

ただこれは非常に理解しやすいです。
最初はこれを覚えて下さい。

今は
use
を使います。

つまりモジュール(*.pm)です。

モジュールも自分で作れますが、オブジェクト指向と言うのを理解していないと
いけません。Perl5以上ではオブジェクト指向型のプログラミングが一般的です
から。

これは次回のステップという事で......



返信(回答)する


Web裏技