我需要使用一個變數來控制列印方法
。我的代碼如下
#!/usr/bin/perl
# test_assign_func.pl。
use strict;
使用警告。
sub echo{
my ($string) = @_;
print " from echo: $string
"。
}
my $myprint = &echo;
$myprint->("hello")。
$myprint = &print;
$myprint->("world")。
當我運行時,對于print函式的賦值,我得到了如下錯誤
$ test_assign_func.pl
來自echo:hello
在test_assign_func.pl行print呼叫了未定義的子程式&main::print。
看起來我需要在列印函式前加一個名字空間,但我找不到這個名字空間。謝謝你的任何建議!
uj5u.com熱心網友回復:
print是一個運算子,不是一個子。
perlfunc:
本節中的函式可以作為運算式中的術語。它們主要分為兩類:串列運算子和命名的單數運算子。
Perl為命名的運算子提供了一個子,它可以被一個具有原型的子所重復。使用&CORE::name可以獲得這些的參考。
my $f = &CORE::length。
say $f->("abc"/span>); # 3
但是print并不是這樣的運算子(因為它接受檔案句柄的方式)。對于這些,你需要創建一個具有更有限的呼叫約定的子。
my $f = sub{ print @_ };
$f->("abc
")。)
相關的:
uj5u.com熱心網友回復:
正如在CORE中提到的,有些函式不能作為子程式來呼叫,只能作為裸詞。print就是其中之一。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/328596.html
標籤:
上一篇:【Java】面向物件之繼承篇
