in reply to Odd number of elements in hash assignment

Are you really trying to assign to %Questions and @Sorter at the same time? How is Perl supposed to know where in the list the values for %Questions leave off and the values for @Sorter begin?

Perl can't know, so all the values go into %Questions. You'll have to rethink how your Load function returns its results.

This is mentioned in perldata, under List Value Constructors.

The final element 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 first one in the list will soak up all the values, and anything after it will get a null value. This may be useful in a local() or my().