Comment puis-je prendre une référence à un sous-programme Perl?
J'ai un peu de mal à trouver comment faire référence à une sous-routine dans un module externe de fichier. Maintenant, je suis en train de faire ceci:
Fichier externe
package settingsGeneral;
sub printScreen {
print $_[0];
}
Principal
use settingsGeneral;
my $printScreen = settingsGeneral::printScreen;
&$printScreen("test");
mais ce résultat dans une erreur:
Ne pouvez pas utiliser des chaînes de caractères ("1") comme une sous-routine ref tandis que strict "refs" en cours d'utilisation
OriginalL'auteur Pmarcoen | 2010-04-06
Vous devez vous connecter pour publier un commentaire.
Comme indiqué dans perlmodlib, vous devriez commencer votre module du nom avec une majuscule:
Une façon d'appeler un sous défini dans un autre package est à qualifier pleinement que sous son nom quand vous l'appelez:
Si tout ce que vous voulez, c'est une référence à
printScreen
, de la saisir avec la barre oblique inverse de l'opérateuret de l'appeler avec un de
Vous pouvez créer une alias dans votre forfait actuel:
Ignorer les parenthèses (nécessaire car le sub dans le paquet actuel n'est pas connu au moment de la compilation) par écrit:
La Exportateur module peut faire ce travail de surveillance pour vous:
SettingsGeneral.pm:
principal:
printScreen("another urgen flash\n");
besoins des parensmerci beaucoup ! appris quelque chose 😉
Merci! Fixe.
Vous êtes les bienvenus! Je suis content que ça aide.
OriginalL'auteur Greg Bacon