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
1212
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
Marin sitä, Marin tätä, yhyy yhyy, persut jaksaa vollottaa
On nuo persut kyllä surkeaa porukkaa. Edelleen itkevät jonkun Marinin perään, vaikka itse ovat tuhonneet Suomen kansan t1143666Ikävä sinua..
Kauan on aikaa kulunut ja asioita tapahtunut. Mutta sinä M-ies olet edelleen vain mielessäni. En tiedä loinko sinusta va141651Riikka Purra: "Kokoomus haluaa leikata pienituloisten etuuksista - Se ei meille käy"
Näin vakuutti persujen Purra edellisten eduskunta vaalien alla,. https://www.ku.fi/artikkeli/4910942-kun-uudessa-videos141518Muistattekos kuinka persujen Salainen Akentti kävi Putinin leirillä
Hakemassa jamesbondimaista vakoiluoppia paikan päällä Venäjällä? Siitä ei edes Suomea suojeleva viranomainen saanut puhu181376Riikka Purra sanoo, että sietokykyni vittumaisiin ihmisiin alkaa olla lopussa.
https://www.iltalehti.fi/politiikka/a/be8f784d-fa24-44d6-b59a-b9b83b629b28 Riikka Purra sanoo medialle suorat sanat vitt2931363Lindtmanin pääministeriys lähenee päivä päivältä
Suomen kansan kissanpäivät alkavat siitä hetkestä, kun presidentti Stubb on tehnyt nimityksen. Ainoastaan ylin tulodesi241232Kapiainen siviiliesimies, Herra suuri Herra
Sotilaana kyvytön, johtajana munaton ja kotona tossun alla. Se on upseerin uran tuen pää, seinään ajo. Mutta aina löytyy73902Tuntuuko sinusta mies
että olet jossain, mutta sydämessäsi haluat olla muualla. Suunnittelet kaikkea kivaa ja olet innolla mukana, mutta silti13882Väärä pää tutustumiseen
Mikä ihme on, että miehet haluavat ensimmäisenä sänkyyn? Onko nykyään niin helppo saada nainen peittojensa alle.. tai pä113842Mitä tapahtuisi....
Meidän välillä jos törmäisimme yöelämässä ilman häiriötekijöitä ja olisimme hieman huppelissa? Päättyisikö ilta kenties60809