package NCS::PuppetDB::Data { use strict; use warnings; use JSON::Tiny qw(decode_json encode_json); use Net::Curl::Easy qw(:constants); use Exporter qw( import ); our @EXPORT_OK = qw( getHosts getHostFacts getFact); our $VERSION = '0.5.3'; sub getHosts { ... } sub getHostFacts { ... } sub getFact { ... } 1; } #### package NCS::PuppetDB::Data { use Role::Tiny; use JSON::Tiny qw(decode_json encode_json); use Net::Curl::Easy qw(:constants); use feature qw(say); say q(package ) . __PACKAGE__; sub getHosts { ... } sub getHostFacts { ... } sub getFact { ... } 1; } #### package BlueCowdawg { use Class::Tiny; use Role::Tiny::With; use feature qw(say); with qw(NCS::PuppetDB::Data); say q(package ) . __PACKAGE__; 1; } #### #!/usr/bin/env perl use strict; use warnings; use Try::Tiny; use BlueCowdawg; use feature qw(say); say q(package ) . __PACKAGE__; my $fido = BlueCowdawg->new(); try { say $fido->getHosts(); } catch { warn $_; }; try { say $fido->getHostFacts(); } catch { warn $_; }; try { say $fido->getFact(); } catch { warn $_; }; __END__