-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

Loading a module is simply executing it.

于 2013-02-22T02:33:41.797 回答
1

a() 将始终在加载模块时运行,因为您在模块中显式调用它。

你为什么以这种方式运行 a() ?您不应该将 Myscript 用作脚本和库。

相反,将调用 a() 的代码移动到单独的文件中并运行它而不是 Myscript。将其重命名为 MyLibrary,并将新文件命名为 Myscript。现在在调用 b() 的文件中,导入 Mylibrary 而不是 Myscript。

于 2013-02-22T11:57:50.637 回答