pour un sous-programme Perl, si passer 0 argument, je peux utiliser 4 formes pour l'appeler. Mais si le passage 1 ou plusieurs arguments, il y a une forme que je ne peux pas utiliser, s'il vous plaît voir ci-dessous:pourquoi la syntaxe `& nom arg1 arg2 ...` ne peut pas être utilisée pour appeler un sous-programme Perl?
sub name
{
print "hello\n";
}
# 4 forms to call
name;
&name;
name();
&name();
sub aname
{
print "@_\n";
}
aname "arg1", "arg2";
#&aname "arg1", "arg2"; # syntax error
aname("arg1", "arg2");
&aname("arg1", "arg2");
La sortie d'erreur est
String found where operator expected at tmp1.pl line 16, near "&aname "arg1""
(Missing operator before "arg1"?)
syntax error at tmp1.pl line 16, near "&aname "arg1""
Execution of tmp1.pl aborted due to compilation errors.
Quelqu'un peut-il expliquer la sortie d'erreur du compilateur de point de vue? Je ne comprends pas pourquoi il se plaint de l'opérateur manquant.
Merci
Vous avez une bonne réponse. Pour plus de discussion sur l'utilisation de '&' pour cela, voir ['this post'] (http://stackoverflow.com/questions/1347396/when-should-i-use-the-to-call-a- perl-subroutine), et ['this post'] (http://stackoverflow.com/questions/8912049/difference-between-function-and-function-in-perl), et [' this post'] (http: //stackoverflow.com/questions/6706882/using-ampersands-and-parens-when-calling-a-perl-sub) ... et il y en a probablement d'autres. – zdim
@zdim je me demandais juste, pourquoi avez-vous mis les liens dans le code de balisage? – simbabque
@simbabque Hah, bon point. Je suppose qu'ils sont plus visibles, mis en évidence. Je ne sais pas vraiment. Je n'y ai jamais vraiment pensé comme du «code balistique» (vous avez raison, c'est vrai) - mais plutôt comme du surlignage. – zdim