#!perl
use strict;
use warnings;
use IO::Interactive::Tiny;
use Encode qw//;

my $encoding = shift @ARGV;

unless ( IO::Interactive::Tiny::is_interactive(*STDIN) ) {
    while (my $line = <STDIN>) {
        $line =~ s/\\x\{([0-9a-f]+)\}/_unescape($1)/ge;
        print $line;
    }
}

sub _unescape {
    my ($code) = @_;

    Encode::encode($encoding || 'utf8', chr(hex $code));
}
