I see what is going on now. This line:
in reply to Re: Re: It is not an array!
in thread It is not an array!
makes a reference to the array @_, and assigns $class that reference. %parameters is left blank. Calling ref on an unblessed array reference returns ARRAY; the next line then blesses $self as ARRAY. Removing the backslash in the first line would cause $class to get the first argument, and %parameters to get the other arguments converted into a hash, which seems to be more what you want.
my ($class, %parameters) = \@_;