Nick Ing-Simmons wrote:
I know roughly how swash stuff works, but not what PAR is.
The 'swash' stuff is used for uc/lc and the like when chars > 0x100
are involved. Snag is perl uses regular expressions to load the tables - so if 1st use of table is in a regular expression odd things
happen.

Thanks! That was enough hint for me to track this bug down.


For Perl 5.8.x, it turns out it's my fault -- Module::ScanDeps forgot to
include unicore/To/* in its heuristics.  0.34 has been released to CPAN
and here:

http://aut.dyndns.org/dist/Module-ScanDeps-0.34.tar.gz

Upgrading to 0.34 should fix the problem for 5.8.x users right away.

For Perl 5.6.x, the bug is more elusive; it turns out line 30 of
utf8_heavy.pl's SWASHNEW does not assign anything to $list:

$list ||= eval { $caller->$type(); }
|| do "$file.pl"
|| do "$encoding/$file.pl"
|| do "$encoding/Is/${type}.pl"
|| croak("Can't find $encoding character property definition via $caller->$type or $file.pl");


Strangely, replacing the ||= operator with "unless" fixed this problem:

$list = eval { $caller->$type(); }
|| do "$file.pl"
|| do "$encoding/$file.pl"
|| do "$encoding/Is/${type}.pl"
|| croak("Can't find $encoding character property definition via $caller->$type or $file.pl") unless $list;


This workaround will be available in PAR 0.77; 5.6.x users with a C
compiler are encouraged to try out the snapshot build
(http://p4.elixus.org/snap/PAR.tar.gz) and see if it works for them.

What does 'pp' do - can the above be "expanded" into normal perl?

"pp" turns Perl programs into ready-to-run executables. See http://par.perl.org/?Features for more information. :-)

Thanks,
/Autrijus/

Reply via email to