Diamant-Operator mit $ref->{handle} benutzen?
Diamant-Operator mit $ref->{handle} benutzen?
am 01.06.2006 15:00:39 von fuzz
Kann ich den Diamant-Operator mit einer Reference benutzen? Wie sieht
die Syntax dazu aus? Folgendes Minimalbeispiel steigt mit einem 'syntax
error at bubu.pl line 8, near "< ($ref->{handle"' aus bzw. läßt sich
nicht mal kompilieren.
#!/usr/bin/perl
use strict;
use warnings;
my $ref = { handle => IO::File->new('/etc/hosts') };
while (<$ref->{handle}>)
{
print;
}
Geht das überhaupt oder ist das ein Feature des Diamant-Operator?
--
So long... Fuzz
Re: Diamant-Operator mit $ref->{handle} benutzen?
am 01.06.2006 15:53:47 von Mirco Wahab
Thus spoke Erik Wasser (on 2006-06-01 15:00):
> my $ref = { handle => IO::File->new('/etc/hosts') };
>
> while (<$ref->{handle}>)
> {
> print;
> }
scheint nicht zu gehen, versuch mal:
#!/usr/bin/perl
use strict;
use warnings;
use IO::File;
my $ref = { handle => IO::File->new('test.txt') };
my $deref = $ref->{handle};
while ( <$deref> ) {
print;
}
Viele Grüße
Mirco
Re: Diamant-Operator mit $ref->{handle} benutzen?
am 03.06.2006 17:12:35 von fuzz
Mirco Wahab wrote:
> scheint nicht zu gehen, versuch mal:
Ach verdammt, das hätte ich dazu schreiben sollen. Der Workaround ist
mir bekannt. Ich wollte nur wissen, ob das Problem bei mir oder bei
Perl liegt.
Der Workaround funktioniert natürlich. B-)
--
So long... Fuzz
Re: Diamant-Operator mit $ref->{handle} benutzen?
am 03.06.2006 19:52:12 von Frank Wiegand
Erik Wasser schrieb:
> while (<$ref->{handle}>)
>
> Geht das überhaupt oder ist das ein Feature des Diamant-Operator?
Zumindest bei 5.8.7 geht das nicht, weil der Parser das Konstrukt <>
nicht "sauber" parst. Stattdessen liest er den Inhalt bis zum ersten '>'
aus, und das ist bei dir der Dereferenzierungspfeil (siehe toke.c,
Funktion S_scan_inputsymbol).
Frank