Wie behandeln Unterprogramm neu definiert Fehler in Perl
Also ich habe eine Datei, die kurz die dieses problem hat...
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX;
...
sub remove {
...
}
...
und ich bekomme eine Fehlermeldung erhalten, sagen die Unterroutine remove
wurde neu definiert. Ich kenne das problem, es ist ein Unterprogramm aufgerufen remove
in POSIX. Allerdings, ich weiß nicht, wie es zu handhaben. Wie ist dieses problem in der Regel gelöst?
InformationsquelleAutor floogads | 2010-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
hierzu:
angehalten wird, den export aller default-Funktionen der POSIX-Modul. Sie müssen dann, um die Präfix-alle POSIX-Methoden mit POSIX:: wie:
für die POSIX-entfernen-Funktion.
Ja, in der Regel um Konflikte zu vermeiden Subroutinen-Definitionen sein bestes, um zu importieren, die nichts oder nur diese Subroutinen sind Sie sicher, dass eindeutige Namen haben.
es ist üblich zu sagen
use POSIX qw(mkfifo modf);
wo Sie explizit eine Liste mit allen Funktionen, die Sie importieren möchten. Auf diese Weise müssen Sie nicht zu verwenden, diePOSIX::
Präfix über alle, und Sie nicht haben, um sorgen über die Konflikte mit dem Unterprogramm-Namen in Ihrem Programm.Funktioniert das, wenn
POSIX
war ein weiteres Skript und kein Perl-Modul ? Wie es scheint, nicht.InformationsquelleAutor ennuikiller
Den anderen Weg, um diese Warnung zu unterdrücken, um Ihre Unterroutine Neudefinition innerhalb einer
no warnings 'redefine'
block:InformationsquelleAutor mob
Können Sie ausschließen, bestimmte Symbole wird normal exportiert mit dem '!name " - Richtlinie (siehe perldoc Exporter), z.B.:
InformationsquelleAutor Ether
Unterprogramm XYZ neu definiert in Zeile N [perl Fehler]
Könnten Sie wickeln Sie Ihre routine in no warnings 'redefine" (die lexikalisch Gültigkeitsbereich):
no warnings 'redefine';
Es funktionierte für mich!
InformationsquelleAutor Sujitha Suresh