beim Refactoring etwas von meinem Perl-Code i
bemerkte folgendes Strangverhalten.
Betrachten Sie dieses kleine Beispielskript:
die erwartete Warnung
%Vor% erscheint dreimal anstatt nur einmal. Was sind die anderen zwei Auslöser für diese Warnung? Alle drei beziehen sich auf exit(0)
.
Perl-Version 5.12.4 auf Gentoo Linux.
danke.
Ich glaube, tjd hat die Antwort bekommen. Wenn Sie dem Testpaket eine DESTROY () und AUTOLOAD () -Methode hinzufügen, erhalten Sie nur eine Warnung (über das Fehlen von @test :: ISA).
%Vor%Sie müssen im Allgemeinen sicherstellen, dass die in der @ISA-Liste aufgeführten Pakete bereits geladen wurden. In Ihrem Beispiel haben Sie möglicherweise Folgendes erwartet:
%Vor%Es ist ein bisschen seltsam, dass Ihr Paket keine explizite new () -Methode hat. Stattdessen haben Sie eine Anweisung, die bless ();
aufruftWenn Sie eine neue () Methode wie diese hatten:
%Vor%Dann würden Sie die dreifache Fehlermeldung erst sehen, wenn etwas neu ();
genannt wird %Vor%Vielleicht möchten Sie das Pragma 'base' verwenden, was zu einem fatalen Fehler führt, der besagt, dass das 'fehlende' Paket nicht geladen werden kann:
%Vor%Das Basis-Pragma versucht, das fehlende Paket für Sie zu laden. Sie brauchen keine separate 'missing' Anweisung.
So könnte das letzte Ding so aussehen:
%Vor%Sie könnten dann all dies in eine Datei namens test.pm einfügen und in einem Skript verwenden:
%Vor%Hoffe, das hilft.
Tags und Links perl perl-module