in reply to Stuck on packages

package Vehicle; sub new { my $class = @_; ...
try my $class = shift; or my ($class) = @_;, but the above is assigning the 'length' of @_ (probably 1) to $class, so your objects aren't being properly blessed.

(there are other problems with the code, see other responses, don't expect this comment to solve everything)