In fact, passing by reference is a must to preserve the values in separate data structures, even an array and scalar. For instance:
my @array = qw ( 1 2 3 4 5 );
my $num = 6;
&testsub ( @array, $num );
sub testsub {
my ( @list, $single ) = @_;
print @list;
}
will print:
123456
Passing those values via the @_ flattens all values into one long list. However:
my @array = qw ( 1 2 3 4 5 );
my $num = 6;
&testsub ( \@array, $num );
sub testsub {
my ( $list, $single ) = @_;
print @$list;
}
will print:
12345
where passing the array by ref will keep the values from all merging into the single list.