2017-04-04 1 views
3

Wie wird auf print verwiesen?Wie wird in Perl gedruckt?

Ich habe versucht:

my $p = \&print; 

Aber es wirft:

Undefined Subroutine &main::print

+1

Was planen Sie mit '$ p' machen? – toolic

+1

'perl -E 'mein $ p = sub {print @_}; $ p -> ("Hallo \ n") ' –

+0

Umhergehen, ändern und aufrufen. – ceving

Antwort

5

Es \&CORE::print sein würde, aber perldoc CORE lists print as not available.

Sie können nur ein Anon Unter um ihn herum wickeln und obwohl die args weiter:

my $p = sub { print @_ }; 
$p->("hi"); 

Auch in der ursprünglichen Methode sans der Backslash funktioniert Perl 6:

my $p = &print; $p("hi") 
+0

Re "* Listen drucken als nicht verfügbar *", Man kann nur einen Verweis auf Operatoren erhalten, die durch Subroutinen repliziert werden können, so dass Sie keinen Verweis auf den 'print'-Operator bekommen können (wegen seines optionalen führenden Blocks/Globs)) mehr als Sie einen Verweis auf den Additionsoperator bekommen können (weil es ein Infix-Operator ist). – ikegami

+1

Was auch in Perl 6 funktioniert: 'my & add = & infix: <+>; sag add 2, 5 '; # OUTPUT: 7' –

+0

Nicht sicher, was Sie damit erreichen wollen, aber es wird wahrscheinlich zu Verwirrung führen. Zumindest ist das Bit in Ihrer Antwort. – ikegami