यदि आप पहले से 5.10 से अटके हुए हैं, तो ऊपर दिए गए समाधान say
फ़ंक्शन को पूरी तरह से दोहराएंगे नहीं । उदाहरण के लिए
sub say { print @_, "\n"; }
इनवोकेशन जैसे काम नहीं करेगा
say for @arr;
या
for (@arr) {
say;
}
... क्योंकि उपरोक्त फ़ंक्शन अंतर्निहित वैश्विक $_
तरह कार्य नहीं करता है print
और वास्तविक हैsay
फ़ंक्शन की ।
अधिक बारीकी से प्रतिपल 5.10+ की प्रतिकृति बनाना say
चाहते हैं
sub say {
if (@_) { print @_, "\n"; }
else { print $_, "\n"; }
}
जो अब इस तरह काम करता है
my @arr = qw( alpha beta gamma );
say @arr;
# OUTPUT
# alphabetagamma
#
say for @arr;
# OUTPUT
# alpha
# beta
# gamma
#
say
Perl6 में निर्मित थोड़ा अलग तरह से व्यवहार करता है। इसके साथ इनवाइट करना say @arr
या @arr.say
केवल एरे आइटम को समेटना नहीं होगा, बल्कि उन्हें लिस्ट सेपरेटर से अलग कर देता है। इसे perl5 में दोहराने के लिए आप ऐसा करेंगे
sub say {
if (@_) { print join($", @_) . "\n"; }
else { print $_ . "\n"; }
}
$"
वैश्विक सूची विभाजक चर है, या यदि आप उपयोग कर रहे हैं English.pm
तो है$LIST_SEPARATOR
यह अब perl6 की तरह अधिक कार्य करेगा, जैसे
say @arr;
# OUTPUT
# alpha beta gamma
#