use strict; use warnings; my @json = jsonsolute('JSON::MaybeXS', 'encode', 'decode'); print $json[0], "\n"; print $json[1]->{key}, "\n"; @json = jsonsolute(); sub jsonsolute { my ($jsonpackage, $jsonefunction, $jsondfunction) = @_; $jsonpackage ||= 'JSON::MaybeXS'; $jsonefunction ||= 'encode_json'; $jsondfunction ||= 'decode_json'; eval "require $jsonpackage"; if ($@) { print "package $jsonpackage missing\n"; } else { my $json = $jsonpackage->new(pretty => 1, canonical => 1); my $encoded = $json->$jsonefunction({key => 'value'}); my $decoded = $json->$jsondfunction('{"key":"value"}'); return $encoded, $decoded; } }