use strict; use warnings; my @lista_1 = (1, 2, 3); my @lista_2 = qw(a b c); my $_test = 'STOP'; =pod sub proces { my (@array_1, @array_2) = @_; print "array_1 are ", scalar(@array_1), " elemente\n"; print "Acestea sunt: @array_1\n"; print "array_2 are ", scalar(@array_2), " elements\n"; print "Acestea sunt: @array_2\n"; } proces (@lista_1, @lista_2); print "Subrutina s-a executat corect $_test\n"; =cut # Introducerea mai multor variabile @array ca parametri la inițializarea unei subrutine # determină @_ să preia toate valorile componentelor array-urilor la un loc. # Toate aceste valori fiind păstrate cumulat (se pierde apartenența la originea lor). # Funcția scalar reduce contextul la o variabilă scalară. Deoarece scalar-ul stochează # o singura valoare, el poate fi asimilat doar cu numarul de componente din array. #=pod sub proces { my ($ref_1, $ref_2) = @_; my @array_1 = @$ref_1; my @array_2 = @$ref_2; print "array_1 are ", scalar(@array_1), " elemente\n"; print "Acestea sunt: @array_1\n"; print "array_2 are ", scalar(@array_2), " elements\n"; print "Acestea sunt: @array_2\n"; } proces (\@lista_1, \@lista_2); print "Subrutina s-a executat corect $_test\n"; #=cut # Subrutina poate primi ca parametri array-uri, hash-uri # sau variabile ce descriu structuri complexe de date. # Însă, păstrarea integrității acestora este posibilă # doar dacă aceste variabile sunt trimise prin intermediul unei referințe.