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; } } #### { "key" : "value" } value encountered object 'Cpanel::JSON::XS=SCALAR(0x564228375740)', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing) at ...(my $encoded)