Si vous êtes bloqué avec la version antérieure à 5.10, les solutions fournies ci-dessus ne répliqueront pas complètement la sayfonction. 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 printet la sayfonction réelle .
Pour répliquer plus fidèlement le perl 5.10+, sayvous 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' sayintégré dans perl6 se comporte un peu différemment. L'appeler avec say @arrou @arr.sayne 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.pmalors est est$LIST_SEPARATOR
Il agira maintenant plus comme perl6, comme ça
say @arr;
# OUTPUT
# alpha beta gamma
#