lc ja UTF-8

unicodaaja

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.

5

1206

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Minkähän takia ns. persuille ei tunnu työ maistuvan?

      Vaikuttavat olevan joutoväkeä syystä tai toisesta  – työttömiä tai työeläkeloisia. Muiden rahoilla pötköttelevää väkeä,
      Maailman menoa
      88
      4525
    2. Olit ihan

      Kiihkona silloin. Sen näki ja lähes tunsi. Ei tainnut olla kaukana et olisit vetänyt lähellesi jos siihen olisi hetki tu
      Ikävä
      26
      3314
    3. Kaipaamasi miehen nimi?

      Ja maakunta tai kaupunki?
      Ikävä
      20
      3065
    4. Miksiköhän vasemmistossa on niin paljon ns. tapatyöttömiä ja muita köyhiä?

      Tokihan Minja Koskela oli sitä mieltä, että ei terveenkään ihmisen ole pakko tehdä töitä, sitä neuvoa moni vassu noudatt
      Maailman menoa
      41
      2936
    5. Oletko keskustellut kaivatustasi muiden

      Kanssa lähiaikoina? Jos, onko keskustelu ollut positiivista tai negatiivista? Vaikuttaako keskustelut mielipiteeseesi ka
      Ikävä
      49
      2777
    6. Trump huonommassa kunnossa kuin Usasta virallisesti sanotaan?

      "Terveys on vakaa mutta ei normaali".Uskallan melkein sanoa,että Trumpin terveydentilaa kaunistellaan.Myös se että se nu
      Maailman menoa
      117
      2767
    7. Kyllä on Vasemmistoliitosta Koskelan johdolla tullut todellinen ääripuolue

      se on niin tulipunainen kuin olla voi, ja selvästi haluaa jatkuvasti eripuraa, ja repiä kansaa kahtia. Siinä on jo vuod
      Maailman menoa
      17
      2569
    8. Suomen veroaste 5 %-yks liian matala

      Palauttamalla kokonaisveroaste 1990-luvun tasolle saadaan hyvinvointivaltion palvelut rahoitettua ilman velan ottoa.
      Maailman menoa
      113
      2305
    9. MTV: Harvinainen haastattelu! Vappu Pimiä kommentoi vihdoinkin uutta TTK-juontajaa

      TTK-juontajaspekuloinnit käyvät edelleen kuumana. Kenet sinä haluaisit uudeksi TTK-juontajaksi? Kommentoi alle! Lue,
      Suomalaiset julkkikset
      14
      2115
    10. Vornanen ja oulainen

      Voi voi Ville mihin sekaannuit🥶
      Oulainen
      7
      1841
    Aihe