-1

いくつかのサブルーチンを含むpmファイルがあります。スクリプト「myscript.pm」の例を次に示します。

sub a();
sub b();
sub c();

a();      #this can not be deleted in my situation in this pm file. 

sub a() {
 print 'a';
}

sub b() {
 print 'b';
}

sub c() {
 print 'c';
}

sub d() {
 print 'd';
}

他のスクリプト「running.pl」では、myscript.pmからcサブルーチンを呼び出したいと思います。スクリプトは次のとおりです。

use myscript qw(b);
b();

私が得る結果はになります ab。しかし、これは私の意図ではありません。結果に期待bしていた。実行せずにmyscript.pmからbサブルーチンを呼び出すにはどうすればよいa();ですか?

4

2 に答える 2

1

a() は、モジュール内で明示的に呼び出しているため、モジュールのロード時に常に実行されます。

なぜそのように a() を実行しているのですか? Myscript をスクリプトとライブラリの両方として使用しないでください。

代わりに、a() を呼び出すコードを別のファイルに移動し、Myscript の代わりにそれを実行します。名前を MyLibrary に変更し、新しいファイルを Myscript と呼びます。b() を呼び出すファイルで、Myscript の代わりに Mylibrary をインポートします。

于 2013-02-22T11:57:50.637 に答える
1

モジュールのロードは、単純にそれを実行することです。

于 2013-02-22T02:33:41.797 に答える