in reply to Wierdness with a reference to @_

using the \ (reference) operator does not refer to a copy of the original array, but to the array itself, so whatever is populating @_ must empty it afterwards. i believe this is because it uses a mechanism along the lines of local. to take a reference to a copy of your array, do the following: $self->{bar} = ref($_[0]) ? $_[0] : [ @_ ]; this copies @_ into an anonymous array and returns a reference.