ciao

questo va bene
subchiamata
{
$primoarray = shift;
$secarray = shift;
$terzarray = shift;
}

equivalente a
subchiamata
{
($primo,$secondo,$terzo)=@_;
}

Ricorda che tutti i parametri che passi sono inseriti nello stesso ordine nel vettore @_ .
shift to toglie il primo elemento dell'array. Se non specifichi un array preciso usa @_ che è quello che contiene gli array nel tuo caso.

subchiamata(\@a,\@b,\@c); #è corretto è ti funziona


In $Primoarray te hai l'indirizzo del primo array. Se te lavori con l'indirizzo vai a modificare il vettore originale.
Dunque se dentro la sub di prima fai
$primoarray->[0]='ciao mondo'; # -> si usano con i puntatori ad hash, array, code, scalari
modifichi il primo elemento del vettore anche nel main.

Se ti trovi male puoi anche fare una copia del vettore.
@copia=@$primoarray; # viene valutata l'espressione nel contesto lista e viene fatta la copia


perl rulez

ciao