my $want = [ { printer1 => Printer::Status::Acme::x1000->new( qw[serial_number bios_revision] ) }, { printer2 => Printer::Status::Acme::x1200->new( qw[firmware_revision toner] ) }, { printer2 => Printer::Status::Acme::c800dn->snmp( qw[mac_address serial_number] ) }, ]; my %result = Printer::Status->as_hash($want); # or my @result = Printer::Status->as_array($want);