The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More 'no_plan';

use Encode::Punycode;
use Encode;

my @input = read_sample('t/sample.txt');
for (@input) {
    my($utf8, $punycode) = @$_;
    is encode('Punycode', $utf8), $punycode;
    is decode('Punycode', $punycode), $utf8;
}

sub read_sample {
    open my $fh, shift;
    local $/ = '';
    my @input;
    while (my $block = <$fh>) {
        next if $block !~ /Punycode:/;
        my @unicode = $block =~ /u\+([0-9a-f]{4})/gi;
        my $punycode = ($block =~ /Punycode: (.+?)\n$/s)[0];
        push @input, [ join('', map chr(hex($_)), @unicode), $punycode ];
    }
    return @input;
}