end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転します

flagged utf8(Encode::decode)の文字は、unpack()によるurl encode不可?

#!/usr/local/bin/perl
use strict;
use utf8; #←これ!!!
use CGI;
use Encode;

my $ORG_STR = 'テスト';

main();

sub main {
    my $str = $ORG_STR;
    $str =~ s/(\W)/'%' . unpack('H2', $1)/ego;
    print encode('utf8',"$ORG_STR -> "), $str,"\n";
    print encode('utf8',"$ORG_STR -> "),CGI::escape($ORG_STR),"\n";
}

↑これを実行すると、↓こう

[endo@colinux tmp]$ ./foo.pl 
Wide character in print at ./foo.pl line 14.
テスト -> テスト
テスト -> %E3%83%86%E3%82%B9%E3%83%88

そういうものなのかな? CGI::escape()は動くのでいいんですけど