in reply to Passing array and hash together : Solved

Please use <code></code> tags to format your code.

In routine_2 your hash reference is stored as the last element in @array.

quoted from perldata

The final element of a list assignment may be an array or a hash: ($a, $b, @rest) = split; my($a, $b, %rest) = @_; You can actually put an array or hash anywhere in the list, but the fi +rst one in the list will soak up all the values, and anything after it will become undefin +ed. This may be useful in a my() or local().

You must decide now, whether to pass the array as last argument to routine_2 or to pass a reference to that array and then use that reference in your subroutine. I'd use the second option. ;o)