Comment gérer les sous-routine redéfini les erreurs en Perl
J'ai donc un fichier en bref a ce problème...
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX;
...
sub remove {
...
}
...
et je reçois une erreur indiquant que la sous-routine remove
a été redéfini. Je sais que le problème, il y a une sous-routine appelée remove
dans POSIX. Cependant, je ne sais pas comment le gérer. Comment ce problème est généralement résolu?
OriginalL'auteur floogads | 2010-08-29
Vous devez vous connecter pour publier un commentaire.
ce faire:
permet d'arrêter l'exportation de toutes les fonctionnalités par défaut du module POSIX. Vous devrez ensuite préfixe tous POSIX méthodes avec POSIX:: tels que:
pour la POSIX fonction de suppression.
Oui, en général, afin d'éviter les conflits de la sous-routine définitions de son mieux pour l'importation rien ou seulement ceux des sous-routines, vous êtes sûr que vous avez des noms uniques.
il est plus courant de dire
use POSIX qw(mkfifo modf);
où vous l'avez explicitement la liste de toutes les fonctions que vous souhaitez importer. De cette façon, vous n'avez pas à utiliser l'POSIX::
préfixe, et vous n'avez pas à vous soucier de conflits avec les noms de sous-routine dans votre programme.Cela fonctionne si
POSIX
était un autre script et pas un module Perl ? Semble comme il ne le fait pas.OriginalL'auteur
L'autre façon de supprimer cette alerte est de mettre votre sous-routine redéfinition à l'intérieur d'un
no warnings 'redefine'
bloc:OriginalL'auteur
Vous pouvez exclure certains symboles habituellement exportés avec les"!le nom de " directive (voir perldoc Exportateur), par exemple:
OriginalL'auteur
Sous-routine XYZ redéfini à la ligne N [erreur perl]
Vous pourriez emballer votre routine en aucun avertissement 'redéfinir' (qui est lexicalement étendue):
pas d'avertissements 'redéfinir';
Il a travaillé pour moi!
OriginalL'auteur