Arrays are passed by reference. If you pass an array as an argument to a procedure and modify that argument within the procedure, the array will have the modified values upon return from the procedure call. For example:
proc fred( string $myArray[] ) { for ( $i=0; $i<size($myArray); ++$i ) { $myArray[$i] = "fred"; } $myArray[$i] = "flintstone"; // add to the end of the array. } string $a[] =`ls -geometry`; print("Before call to fred\n"); print $a; fred($a); print("After call to fred\n"); print $a; produces this output: Before call to fred nurbConeShape1 nurbConeShape2 nurbSphereShape1 nurbSphereShape2 After call to fred fred fred fred fred flintstone