08/03/03 18:25:15
>>600
自分で '%' . unpack('H2', $1) なんてのを入れてるじゃん。
sub html_escape {
my $str = $_[0];
$str =~ s/&(?!(?:\w+|#(?:[Xx][0-9A-Fa-f]+|[0-9]+));)/&/g;
$str =~ s/([\x00-\x09\x0B\x0C\x0E-\x1F"'<>\x7F])/${ \ ord $1 };/g;
$str;
}
sub uri_escape {
my $str = $_[0];
$str =~ s/%(?![0-9A-Fa-f][0-9A-Fa-f])/%25/g;
$str =~ s/([\x00-\x20"'<>\\^`{|}\x7F-\xFF])/ sprintf '%%%02X', ord $1 /eg;
$str;
}
$i =~ s{ \[\[ (.+?) \]\] } {
my($url, $face) = ($1, $1);
$url = uri_escape($url);
$face = html_escape($face);
qq|<a href="$url">$face</a>|;
}egx;