in reply to The correct way to return arrays from a module

You return two references to arrays. _Not_ two arrays.
my ($cols_ref, $hw_ref) = new Itiv::Hw->all_hw($dbh, $filter);
should work.
for my $col ( @$cols_ref ) { print "$col\n"; }
Boris