5.10 öncesi ile takıldıysanız, yukarıda sağlanan çözümler say
işlevi tam olarak kopyalamayacaktır . Örneğin
sub say { print @_, "\n"; }
Gibi çağrılarla çalışmayacak
say for @arr;
veya
for (@arr) {
say;
}
... çünkü yukarıdaki işlev örtük küresel $_
benzeri print
ve gerçek say
işlev üzerinde hareket etmez .
Perl 5.10+ 'yi daha yakından kopyalamak için say
bu işlevi istiyorsunuz
sub say {
if (@_) { print @_, "\n"; }
else { print $_, "\n"; }
}
Şimdi böyle davranan
my @arr = qw( alpha beta gamma );
say @arr;
say for @arr;
say
Perl6 içinde yerleşik biraz farklı davranış sergileyebilir. Onu çağırmak say @arr
veya @arr.say
sadece dizi öğelerini birleştirmekle kalmaz, bunun yerine onları liste ayırıcıyla ayrı olarak yazdırır. Bunu perl5'te kopyalamak için bunu yaparsınız
sub say {
if (@_) { print join($", @_) . "\n"; }
else { print $_ . "\n"; }
}
$"
genel liste ayırıcı değişkeni veya kullanıyorsanız English.pm
,$LIST_SEPARATOR
Şimdi daha çok perl6 gibi davranacak.
say @arr;