我将生产代码与两个具有相同package
的单独文件中的测试代码分开。这可能有点阴暗,但它一直运作良好,因为我避免了导出和导入子程序的麻烦。
我使用constant
#! /usr/bin/perl
use strict;
use warnings;
package A;
1;
use constant WORLD => "WORLD\n";
sub helloWorld {
print STDERR "Hello, World\n";
}
sub helloAll {
print STDERR "Hello, All\n";
}
use strict;
use warnings;
package A;
use lib '.';
require 'example.pl';
helloWorld();
helloAll();
print "Hello, ", A->WORLD;
./test.pl
Hello, World
Hello, All
Hello, WORLD
这一切看起来都不错,但如果我尝试将常量称为WORLD
或A::WORLD
而不是A->WORLD
,我会收到错误。
./test.pl第13行使用“strict subs”时不允许使用Bareword“A :: WORLD”。
我想理解为什么,因为常量本质上是子程序,其余的子程序工作正常。