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/