【发布时间】:2021-09-17 16:00:39
【问题描述】:
我需要使用变量来控制打印方法
我的代码在下面
#!/usr/bin/perl
# test_assign_func.pl
use strict;
use warnings;
sub echo {
my ($string) = @_;
print "from echo: $string\n\n";
}
my $myprint = \&echo;
$myprint->("hello");
$myprint = \&print;
$myprint->("world");
当我运行时,我得到以下打印功能分配的错误
$ test_assign_func.pl
from echo: hello
Undefined subroutine &main::print called at test_assign_func.pl line 17.
看起来我需要为打印函数添加名称空间前缀,但我找不到名称空间。谢谢你的建议!
【问题讨论】:
-
您有什么可能的理由这样做?似乎是一个 XY 问题。
-
@TLP 和人们问我为什么问这个问题。当我编写所谓的高阶 Perl 编程,即 Dispatcher Pattern 时,我偶然发现了这一点。我很难分派到打印“功能”。我将我的程序简化为上面的代码。现在我知道 print 不是函数,既不是 sub 也不是通用运算符。
标签: perl namespaces