perl - 如何从一个 perl 模块调用子程序到另一个 perl 模块?

标签 perl perl-module

我有一个 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/

相关文章:

perl - 发行版中的每个 Perl 模块都需要有版本号吗?

perl - LWP::useragent keep_alive 不工作

perl - 如何从命令行检查我的系统上是否安装了 Perl 模块?

javascript - Perl - 向主机提交 Javascript 操作

perl - CGI.pm 通常在哪里创建临时文件?

perl - pragma base - 警告问题

perl - $dummy 和 non-parameter split 在 Perl 中是什么意思?

perl - 如何在 Perl 中以函数式风格编码?

perl - 安装 Perl mod 后,不断收到错误 "Can' t locate Image/Grab.pm in @INC”

perl - 在 Windows 上为 Perl 安装 cURL 模块