hi sadahiro,


SADAHIRO Tomoyuki <[EMAIL PROTECTED]> wrote:


On Thu, 10 Nov 2005 05:33:28 -0800 (PST), rajarshi das <[EMAIL PROTECTED]>wrote

> Hi,
> The following worked in perl-5.005_03 on ebcdic.
>
> $value = "http%3A%2F%2Fw3.pok.ibm.com%2Fpokcomm%2Fthanks.html";
> $value =~ s/%([a-fA-F0-9]{2})/pack('E',chr(hex($1)))/ge;
> print "value : $value\n";
>
> $value is set to "http://w3.pok.ibm.com/pokcomm/thanks.html"

Your code does not work with perl-5.005_03 available from CPAN.
As far as I know, type 'E' for pack has not been implemented yet.
You are correct, this option was locally introduced in perl-5.004.03 and was not available as part of the general source.


cf. http://public.activestate.com/gsar/APC/perl-5.005xx/pp.c
This pp.c (perl-5.005_04+) has same pp_pack code
as that in perl-5.005_03.

I guess this pack('E') is something like an unofficially extended feature
for a perl distribution for ebcdic.
Yes. it is an extended feature for ebcdic platforms.


> However, the pack('E,<>) above is not supported on perl-5.8.7 on ebcdic.
> A few qns here :
> 1) Is there some utility in perl-5.8.7 that can replace pack('E',<>) in the above regular _expression_ ?

method 1)

$value =~ s/%([a-fA-F0-9]{2})/chr(utf8::unicode_to_native(hex($1)))/ge;

Note. utf8::unicode_to_native and utf8::native_to_unicode
are not documented.

method 2)

$value =~ s/%([a-fA-F0-9]{2})/pack('U', hex($1))/ge;
Thanks for suggesting this. This looks like a good alternative.

 


Note. The "UTF8 flag" of $value will be turned on.

Does turning on the 'UTF8-flag' in $value give rise to any issues ?


> 2) Is it allowed to add a case 'E' in the pp_pack.c code in perl-5.8.7 to do this ?

parhaps it will not be allowed.

Regards,

Rajarshi.


Regards,
SADAHIRO Tomoyuki



Yahoo! FareChase - Search multiple travel sites in one click.

Reply via email to