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
1309
Vastaukset 5
- 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
Mitä tuot pöytään parisuhteessa?
Siinäpä se kysymys on otsikossa. Mitäpä siis tuot/toisit pöytään parisuhteessa? Oletko mies vai nainen? Koetko sen mitä34913622 km on nykyään liian pitkä koulumatka
Hesarissa päivitellään lapset joutuu nyt kulkemaan 2 km kouluun jösses. Ruostefillarilla tuo matka menee vaikka miten äk66788- 54773
Martinan bisneksillä ei mene hyvin
https://www.iltalehti.fi/viihdeuutiset/a/c46da6ab-340f-4790-aaa7-0865eed2336 Yrityksen konkurssihakemus on tullut kärä179756- 38745
Tiesitkö? Martina Aitolehden isäpuoli on tämä suosittu laulaja
Martina Aitolehti on seurattu julkisuuden henkilö. Lähipiiriin mahtuu muitakin tunnettuja henkilöitä. Tiesitkö, että Ma28695Miia Heikkinen avautui !
Olipa hyvä kirjoitus, kiitos. Ongelmat mitkä nostat esille on todellisia ja tämä ylimielisyys totta ja se näkyy kaikessa63662- 47644
- 57638
- 58628