my @array1; my @array2; my @array3; my @array_array; @array_array = @{ &firstRoutine() }; &secondRoutine(\@array_array ); sub firstRoutine{ my $count = 0; while (){ my @line = split( /\s+/, $_ ); $array1[$count] = $line[0]; $array2[$count] = $line[1]; $array3[$count] = $line[2]; $count = $count + 1; } my @array_array; push( @array_array, @array1, @array2, @array3); return \@array_array; } sub secondRoutine { my (@array1, @array2, @array3) = { shift @_ }; print ("Test first value in array1: $array1[0]"); print ("Test third value in array2: $array2[2]"); print ("Test fifth value in array3: $array3[4]"); }