我有一个 perl 文件,它使用了两个 perl 模块 A.pm 和 B.pm。
但是在 B.pm 我需要调用 A.pm 的一个子程序。即使我在 A.pm 中使用并尝试使用它,我仍然收到未定义的错误。
对此的任何帮助都非常感谢。
有两个要素——首先是找到模块。Perl 有一个“库”路径,您可以通过以下方式找到:
print join ( "\n", @INC );
Run Code Online (Sandbox Code Playgroud)
这是它看起来的地方。它还会检查当前的工作目录,但使用运行时相对路径会有点困难 - 您需要为此使用FindBin模块。
第二个元素是导入和导出子程序。默认情况下,如果您use A;不想将所有内容导入本地名称空间,因为...您不想意外覆盖您的内部函数之一。那就是疯狂。
所以你要么:
use A qw ( somefunction );
Run Code Online (Sandbox Code Playgroud)
这将“拉入”该函数并在您的本地命名空间中定义它。这些东西的确切行为可以通过Exporter和 设置@EXPORT和来修改@EXPORT_OK。
或者通过“包路径”引用它。
A::somefunction(@arguments);
Run Code Online (Sandbox Code Playgroud)
这也适用于变量,尽管您必须使用our而不是my.
| 归档时间: |
|
| 查看次数: |
8357 次 |
| 最近记录: |