There are quite a few things that are wrong. First of all, with locale "C" it is not possible to see any Japanese text, or actually any text outside of ASCII. So, it looks like you have to change your locale first.
Assuming, that you use xterm as your terminal emulator, try to start it this way
LC_CTYPE="en_US.UTF-8" xterm &
Then check the output of locale command in that new terminal window. It should produce something like
LANG=
LC_CTYPE=en_US.UTF-8
After that, you should convert your text to UTF-8 encoding. Since you haven't provided Japanese text corresponding to the hexdump, and since the hexdump looks like UTF-16, I'll assume, that it is UTF-16. Then you should output the variable using the following:
Encode::from_to($your_variable, "UTF-16", "UTF-8");
print $your_variable, "\n";
If this does not produce the result, then you may have some wrong font for terminal emulator :)
Actually, sending the variable to terminal probably is not the most important thing. You have to work with that value inside of perl. Depending on what you want to do, you have to convert your variables back and forth. For example, to do pattern matching on it, you should first do
use utf8;
my $converted = Encode::decode("UTF-16", $your_variable);
$converted =~ /some Japanese text/;