作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 perl 文件,它使用了两个 perl 模块 A.pm 和 B.pm。
但是在 B.pm 中我需要调用 A.pm 的子程序。即使我在 A.pm 中使用并尝试使用它,我仍然遇到未定义的错误。
非常感谢对此的任何帮助。
最佳答案
有两个要素 - 首先是找到模块。 Perl 有一个“库”路径,您可以通过以下方式找到它:
print join ( "\n", @INC );
这是它看起来的地方。它还会检查当前的工作目录,但使用运行时相对路径会有点困难 - 您需要为此使用 FindBin
模块。
第二个元素是导入和导出子程序。默认情况下,如果您使用 A;
,您不会将所有内容导入您的本地 namespace ,因为...您不想意外覆盖您的内部函数之一.那就是疯狂。
所以你要么:
use A qw ( somefunction );
它将“拉入”该函数并将其定义在您的本地 namespace 中。这些东西的确切行为可以通过 Exporter
修改。并设置 @EXPORT
和 @EXPORT_OK
。
或者通过'包路径'引用它。
A::somefunction(@arguments);
这也适用于变量,尽管您必须使用 our
而不是 my
来限定它们的范围。
关于perl - 如何从一个 perl 模块调用子程序到另一个 perl 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30993820/
我是一名优秀的程序员,十分优秀!