Alexander (HH): Rätsel: Was geht hier schief?

Beitrag lesen

Moin Moin!

Bin mir nicht sicher, aber liefert "new" nicht die Referenz auf die Methode (statt sie auszuführen, vgl. "new()") ? Sprich, ist $fh möglicherweise eine Konstruktor-Methode statt des File-Deskriptors, den man eigentlich gerne hätte?

Nö, das wäre Javascript. Die Klammern sind hier tatsächlich optional, aber sehr empfohlen. Um an eine Referenz auf die Methode zu kommen, müßte man die can-Methode aufrufen, z.B. als my $mref=File::Temp->can('new');. Wenn man *weiß*, dass die Methode direkt in der Klasse implementiert ist (und nicht geerbt ist), kann man sich auch mit my $mref=\&File::Temp::new; behelfen. Das ist aber alles andere als sauber, weil man solche Implementationsdetails nach der reinen Lehre nicht wissen darf.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".