重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

__DATA__ は、__END__ と違う。
巧いこと名前空間分けてくれる。
だから、複数ファイル require しても期待通りに働く。

というような解説を読みました。

下記は sub1の__DATA__ が欲しいのですが、sub2__DATA__が扱われます。

------------------- main.pl
require 'sub1.pl';
require 'sub2.pl';
&sub1();
-------------------

--------------------------- sub1.pl
sub sub1(){ print <DATA>; }
1;
__DATA__
ここは1です。
-----------------------------------

----------------------------- sub2.pl
sub sub2(){ print <DATA>; }
1;
__DATA__
This is 2
------------------------------------


sub1内なのに、sub2の__DATA__が入っては困ります。
どう解決すれば良いのでしょうか?

A 回答 (1件)

うーん、、その解説が、間違いです。


正しくは
「カレントパッケージの名前空間にオープンする」
です。
sub1.plとsub2.plの先頭に、それぞれ
package SUB1; と、 package SUB2;を入れて、
&SUB1::sub1();
と、呼んでみましょう。これならうまくいくはずです。
    • good
    • 0
この回答へのお礼

なるほど。大変良くわかりました。
ありがとうございました!

お礼日時:2005/06/18 19:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!