Thread seltsames um print (10 answers)
Opened by topeg at 2010-02-04 20:27

topeg
 2010-02-04 22:42
#131827 #131827
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
2010-02-04T20:56:15 betterworld
Wenn bei normalen Objekten "$obj->meth" dasselbe ist wie "meth $obj" (Stichwort indirect object syntax), wird "F->print" offenbar anders geparst als "print F", wobei das erstere ein gewoehnlicher Methodenaufruf (wie bei $obj) ist, das zweitere der print-Operator. Beides funktioniert nur, wenn es das Dateihandle F gibt, wobei afaik ein bisschen Heuristik benutzt wird.

Darüber bin ich auch darauf gekommen. Ich wollte das machen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/perl
use strict;
use warnings;

package MyPrint;

sub new
{
  my $class=shift;
  my $file=shift;
  open(my $FH,'>',$file);
  return bless(\*$FH,ref($class)?ref($class):$class);
}

sub print
{
  my $fh=shift;
  print @_;
  print $fh "LOG:",@_;
}

package main;

my $p=MyPrint->new('/dev/null');

print $p "TEST";

Aber klappt nicht. Ins Handle wird geschrieben nur die Objektmethode wird nicht ausgeführt.

Edit:
Da werde ich wohl um PerlIO::via nicht herum kommen.
Last edited: 2010-02-04 22:59:47 +0100 (CET)

View full thread seltsames um print