J'ai créé le sous-programme suivant pour imprimer de façon aléatoire la chaîne MALE ou FEMALE. Lorsque le sous-programme est invoqué, la commande d'impression attribue un "1" à la fin de la chaîne. Voir l'exemple de code et la sortie ci-dessous:Pourquoi l'invocation de l'impression dans un sous-programme ajoute-t-elle 1 à la chaîne?
sub gender {
if ((int rand(100)) >50) {
print "MALE ";
}
else {
print "FEMALE";
}
}
foreach (1..5) {
print &gender, "\n";
}
avis "1" est ajouté à "mâle" ou "Femmes"
SORTIE:
FEMALE1
FEMALE1
MALE 1
MALE 1
FEMALE1
MALE 1
J'utilise perl v5.8.9 v5.8.9
construit pour MSWin32 -x86-multi-thread
Binary build 826 [290470] provided by ActiveState http://www.ActiveState.com Built May 24 2009 09:21:05
ou tout simplement tomber entre parenthèses puisque la sous a été déclarée avant l'appel. La meilleure pratique est cependant d'utiliser les parenthèses vides de toute façon – mfontani
Déposez le & complètement et inconditionnellement. Le seul cas courant où vous devriez toucher & dans un code Perl moderne est de prendre une référence à un sous-programme. (Il y a * d'autres utilisations, mais elles sont obscures.) – Porculus
Ignorer les prototypes. Yay. * bâillement * –