in reply to hashes

Here's the trick:
the keys function returns an array.
When you do
keys @import_values{"ship","weight","dwg","rev"}
You are causing something very funky
%import_values{"ship","weight","dwg","rev"}
Is a syntax error.
@import_values{"ship","weight","dwg","rev"}
Is trying to take a hash slice, which works, but returns an array, and keys expects a hash.

As others have said, just use keys %hash.

The other (not as good, but preserves order of keys) way would be:

foreach $value3 (@import{'ship','weight','dwg','rev'})
See perldata, line 867 or so, for discussion of hash slices