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