我需要使用变量来控制打印方法
我的代码在下面
#!/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.
看起来我需要为命名空间添加前缀来打印函数,但我找不到命名空间。感谢您的任何建议!
最佳答案
print
是一个运算符,而不是一个子。
功能:
The functions in this section can serve as terms in an expression. They fall into two major categories: list operators and named unary operators.
Perl 为命名操作符提供了一个 sub ,可以被一个带有原型(prototype)的 sub 复制。可以使用
\&CORE::name
获得对这些的引用。 .my $f = \&CORE::length;
say $f->("abc"); # 3
但是print
不是这样的运算符(因为它接受文件句柄的方式)。对于这些,您需要创建一个具有更有限调用约定的子程序。my $f = sub { print @_ };
$f->("abc\n");
有关的:关于perl - 在 Perl 中,如何将打印函数分配给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69226416/