Si vous êtes bloqué avec la version antérieure à 5.10, les solutions fournies ci-dessus ne répliqueront pas complètement la say
fonction. Par exemple
sub say { print @_, "\n"; }
Ne fonctionnera pas avec des invocations telles que
say for @arr;
ou
for (@arr) {
say;
}
... parce que la fonction ci-dessus n'agit pas sur le $_
like global implicite print
et la say
fonction réelle .
Pour répliquer plus fidèlement le perl 5.10+, say
vous voulez cette fonction
sub say {
if (@_) { print @_, "\n"; }
else { print $_, "\n"; }
}
Qui agit maintenant comme ça
my @arr = qw( alpha beta gamma );
say @arr;
# OUTPUT
# alphabetagamma
#
say for @arr;
# OUTPUT
# alpha
# beta
# gamma
#
L' say
intégré dans perl6 se comporte un peu différemment. L'appeler avec say @arr
ou @arr.say
ne concaténera pas simplement les éléments du tableau, mais les affichera à la place séparés par le séparateur de liste. Pour répliquer cela dans perl5, vous feriez
sub say {
if (@_) { print join($", @_) . "\n"; }
else { print $_ . "\n"; }
}
$"
est la variable de séparation de liste globale, ou si vous utilisez, English.pm
alors est est$LIST_SEPARATOR
Il agira maintenant plus comme perl6, comme ça
say @arr;
# OUTPUT
# alpha beta gamma
#