Po wywołaniu podprogramu przekazywane parametry są umieszczane w specjalnej tablicy @_
. Można spożywać tę tablicę według wartości zmieniających się my $foo = shift
lub przez bezpośrednie przypisanie tablicy my ($foo,$bar)[email protected]_;
Jest nawet możliwe, aby użyć wartości bezpośrednio z tablicy: $_[0]
dlaczego jedna porównaniu z innymi? Bezpośrednie przypisanie tablic jest najbardziej standardowe i powszechne. Czasami sposób zmiany jest używany, gdy istnieją opcjonalne końcowe wartości. Zniechęca się bezpośrednie użycie macierzy, z wyjątkiem kilku małych nisz: funkcji opakowania, które wywołują inne funkcje, zwłaszcza wewnątrz obiektów. funkcje, które owijają inne funkcje i modyfikują wejścia. Również specjalna forma goto &func
, która natychmiastowo upuszcza bieżący stos wywołań i wywołuje func na aktualnej wartości @_
.
# use shift for optional trailing values
use v5.10;
my $foo = shift;
my $bar = shift // 'default bar value';
my $baz = shift // 'default baz value';
#obj method to call related non-object function.
sub bar { my $self = shift; _bar(@_) }
sub longname { shortname(@_) }
sub get { return $_[0]->$_[1]; }