【发布时间】:2017-10-30 15:24:11
【问题描述】:
我有 test_utils.pm:
package TestUtils;
use strict;
use warnings;
use Exporter 'import';
our @EXPORT = qw / print_diagnostic /;
sub print_diagnostic { <some_code_here> }
我想从位于同一文件夹中的主脚本 tester.pl 调用print_diagnostic(我使用过this solution):
#!/usr/bin/perl
use lib dirname (__FILE__);
use test_utils qw (:ALL);
print_diagnostic(<some_message>);
问题是我得到了
未定义的子例程 &main::print_diagnostic 在...调用
使用显式包名 TestUtils::print_diagnostic 调用函数可以正常工作,但由于各种原因,我确实想在不带这样前缀的情况下调用它。
use test_utils qw(print_diagnostic);
和
require test_utils;
产生相同的结果。
我已经挖掘了几十个类似的问题,尝试了答案和“解决方案”,但所有这些似乎都对我不起作用,而且我对所有“导出”、“导入”感到非常困惑" 以及它周围的所有东西,我无法抓住这些概念,如此违反直觉,比较 C++ 和 Java。
我想做的就是将非常复杂的脚本拆分成几个模块并重用代码(现在有很多重复)。
【问题讨论】:
标签: perl perl-module perl-exporter