Problem med perl 5.14

[email protected] (Henrik Hald Nørgaard) Fri, 28 Oct 2011 13:06:01 +0200
Newsgroups perl.copenhagen
Message-ID <[email protected]>
Jobindex bruger i øjeblikket perl 5.12 og vi har ønsket at opdatere til perl
5.14 her i efteråret. Vi er imidlertid stødt på et problem med perl 5.14,
som måske også kan være af interesse for andre Perl-brugere i
Københavsområdet:

 

Se på denne substitution:

[henrik@gnu ~]$ /home/perlrepo/bin/perl -e 'use 5.012; my $x="Overs\x{e6}r";
$x =~ s/r/ /gi; say $x;'

Ove sæ

 

Intet usædvaligt her, men perl 5.14.2 gør det anderledes:

 

[henrik@gnu ~]$ /home/perlrepo/perl-5.14.2/bin/perl -e 'use 5.012; my
$x="Overs\x{e6}r"; $x =~ s/r/ /gi; say $x;'

Ove sær

 

Det andet "r" bliver ikke substitueret. Problemet opstår kun:

* efter et dansk specialtegn

* med "case-insentitive matchning", /i

 

Det optræder ikke, hvis man tilføjer den nye /l - modifier:

 

[henrik@gnu ~]$ /home/perlrepo/perl-5.14.2/bin/perl -e 'use 5.012; my
$x="Overs\x{e6}r"; $x =~ s/r/ /gil; say $x;'

Ove sæ

 

eller hvis man bruger "use locale":

 

[henrik@gnu ~]$ /home/perlrepo/perl-5.14.2/bin/perl -e 'use 5.012; use
locale; my $x="Overs\x{e6}r"; $x =~ s/r/ /gi; say $x;'

Ove sæ

 

eller hvis man ikke bruger "unicode_strings":

 

[henrik@gnu ~]$ /home/perlrepo/perl-5.14.2/bin/perl -e 'use 5.012; no
feature qw(unicode_strings); my $x="Overs\x{e6}r"; $x =~ s/r/ /gi; say $x;'

Ove sæ

 

Vi troede til at begynde med, at forskellen var en konsekvens af de ikke
bagud kompatible ændringer, som indgår i perl 5.14:

 

http://perldoc.perl.org/perl5140delta.html#Incompatible-Changes

 

men det gav ikke nogen mening. Min kollega, Anders Melchiorsen, gravede dybt
i problemet og fandt ud af, at problemet ikke længere optræder i seneste
blead version af perl (5.15.3) og har rapporteret det som en fejl i perl
5.14:

 

https://rt.perl.org/rt3/Public/Bug/Display.html?id=101710

 

Som det fremgår her, er problemet/fejlen introduceret i perl 5.13.9.

 

Det blev rettet igen af dette commit til perl 5.15:

 

http://perl5.git.perl.org/perl.git/commit/0a185c45d11435c3182b92d9373bd28ab7
c386b2

 

Vi afventer nu, hvad der sker og har udsat opdateringen af perl.

 

Med venlig hilsen
Henrik Hald Nørgaard, Programmør
Jobindex A/S, Holger Danskes Vej 91, 2000 Frederiksberg
Tlf.: +45 38 32 33 55, dir.:  +45 38 32 33 81
 <http://www.jobindex.dk/> www.jobindex.dk