Aika että joku lopulta laittaa vähän Perliäkin tänne, eli miksi seuraava ei toimi?
#!/usr/bin/perl
use utf8;
binmode(STDIN,":utf8");
binmode(STDOUT,":utf8");
$testi="hÖlökyn kÖlKyn";
if($testi=~/(Öl)/i) {
print lc($1)."
";
}
Tämä tulostaa siis
Öl
Jos tuon $1:n sijoittaa johonkin muuhun muuttujaan ensin, siis
$temp=$1;
print lc($temp)."
";
niin tuo tulee pienellä niin kuin pitäisikin.
lc ja UTF-8
5
1230
Vastaukset
- unicodaaja
Ehkä on totta ettei täällä käy ketään, mutta pidänpä sitten julkista yksinpuhelua...
Erittäin kummalliseksi em. ongelman tekee se, että jos $1:tä on käsitelty ennen kuin sitä yrittää pienentää, homma toimii. Elikkä demoten:
#!/usr/bin/perl
use utf8;
binmode(STDOUT,":utf8");
$testi="HÖLÖKYN KÖLKYN";
$testi=~s/(öl)/lc($1)/eig;
print $testi."\n";
Tämä tulostaa:
HÖlÖKYN KölKYN
Elikkä homman saa toimimaan jopa näin:
#!/usr/bin/perl
use utf8;
binmode(STDOUT,":utf8");
$testi="HÖLÖKYN KÖLKYN";
$testi=~s/(öl)/ignore($1).lc($1)/eig;
print $testi."\n";
sub ignore($) {
local ($_)=@_;
return "";
}
Nyt siis tuloste on:
HölÖKYN KölKYN
Ehkä pitäisi ilmoitella bugi... Kyseessä siis:
$ perl --version
This is perl, v5.8.0 built for i386-linux-thread-multi- Mik
Niin, onhan tämä hieman hiljainen foorumi.
Kokeilin selvittää asiaa itsekin, mutta testikoneen perl5.8.0 ei pitänyt koodista ollenkaan, sillä jokainen ääkkönen aiheutti jonkun urputuksen tunnistamattomasta UTF-8 -merkistä. Lisäksi perldoc ei listannut binmodelle toiseksi parametriksi kuin ":raw" ja ":crlf". Jos epäilet perlissä olevan bugin, niin mieti saatko kierrettyä ongelman jollain tapaa.
return "";, miksei return undef ? Lisävinkkinä suosittelen ehdottomasti option -w ja use strict;in käyttöä kaikissa ohjelmissa. - unicodaaja
Mik kirjoitti:
Niin, onhan tämä hieman hiljainen foorumi.
Kokeilin selvittää asiaa itsekin, mutta testikoneen perl5.8.0 ei pitänyt koodista ollenkaan, sillä jokainen ääkkönen aiheutti jonkun urputuksen tunnistamattomasta UTF-8 -merkistä. Lisäksi perldoc ei listannut binmodelle toiseksi parametriksi kuin ":raw" ja ":crlf". Jos epäilet perlissä olevan bugin, niin mieti saatko kierrettyä ongelman jollain tapaa.
return "";, miksei return undef ? Lisävinkkinä suosittelen ehdottomasti option -w ja use strict;in käyttöä kaikissa ohjelmissa.Ääkkösurputus, talleta tiedosto utf-8:na tai poista "use utf8". Onkohan perldocisi jostakin vanhemmasta versiosta? Minun luettelee kyllä ":raw", ":crlf", ":bytes", ":utf8", ":encoding". Kiertohan tuossa jo oli, ja kun homma toimii ASCII-merkeillä ja muillakin kunhan muuttujaan on kerran koskettu, kyseessä lienee aika selkeä bugi. Täytyypä kokeilla päteekö sama homma Windows-koneessa kohta kun sellaisen eteen päädyn.
Kokeilinpa laittaa -w ja use strict;, halusivat vähän järjestelymuutoksia, joiden jälkeen pelaa samoin kuin ennenkin. Näitä käyttäen return undef; antaa:
Use of uninitialized value in concatenation (.) or string at lctest2.pl line 11. - unicodaaja
unicodaaja kirjoitti:
Ääkkösurputus, talleta tiedosto utf-8:na tai poista "use utf8". Onkohan perldocisi jostakin vanhemmasta versiosta? Minun luettelee kyllä ":raw", ":crlf", ":bytes", ":utf8", ":encoding". Kiertohan tuossa jo oli, ja kun homma toimii ASCII-merkeillä ja muillakin kunhan muuttujaan on kerran koskettu, kyseessä lienee aika selkeä bugi. Täytyypä kokeilla päteekö sama homma Windows-koneessa kohta kun sellaisen eteen päädyn.
Kokeilinpa laittaa -w ja use strict;, halusivat vähän järjestelymuutoksia, joiden jälkeen pelaa samoin kuin ennenkin. Näitä käyttäen return undef; antaa:
Use of uninitialized value in concatenation (.) or string at lctest2.pl line 11.Jos jotakuta sattuu kiinnostamaan, sama ongelma esiintyi siis Windows-versiossa Perl 5.8:sta.
- unicodaaja
Päivityksenä, jos jotakuta kiinnostaa, tämä bugi on korjattu Perl-versiossa 5.8.1.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Porvarimediat paniikissa demareiden huiman kannatuksen vuoksi
Piti sitten keksiä "nimettömiin lähteisiin" perustuen taas joku satu. Ovat kyllä noloja, ja unohtivat sen, että vaalit585574KATASTROFI - Tytti Tuppurainen itse yksi pahimmista kiusaajista!!!
STT:n lähteiden mukaan SDP:n eduskuntaryhmän puheenjohtaja Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti1993635Huono päivä
Tänään on ollut tosi raskas päivä töissä. Tekis mieli itkeä ja huutaa. En jaksa just nyt mitään. Minä niin haluaisin ja182438Mikä siinä on ettei persuille leikkaukset käy?
On esitetty leikkauksia mm. haitallisiin maataloustukiin, kuin myös muihin yritystukiin. Säästöjä saataisiin lisäksi lei222385Puolen vuoden koeaika
Voisi toimia meillä. Ensin pitäis selvittää "vaatimukset" puolin ja toisin, ennen kuin mitään aloittaa. Ja matalalla pro91268- 1021069
Juuri nyt! Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti
Ai että mä nautin, Tytti erot vireille! "Käytös on kohdistunut avustajia ja toisia kansanedustajia kohtaan, uutisoi STT671068- 881045
Rötösherra käräjillä
Ähtäriläisyrityksen epärehellisyys oli niin suurta, että mies yhtiön takaa oli lähellä saada ehdotonta vankeutta. Vaikeu181032Häneen rakastuminen oli sellaista
että aina uskoi ja luotti että kyllä tästä vielä edetään jotenkin. Se olikin vain rakastuneen toiveajattelua kaikki. Ta79975