use strict; use warnings; use Encode "decode"; binmode STDOUT, ":utf8"; my @enc = grep { !m/^mime/i } Encode->encodings (":all"); my $c = pack "H*", shift; foreach my $e (@enc) { my $x = eval { decode ($e, $c) }; !defined $x || $x =~ m/^(?:$|\x{fffd})/ and next; printf " %-30s %s\n", $e, $x; }