30. kasu praktikoa: karaktere erabiliena

     Programa honek komando-lerroaren bidez fitxategi-izena eta bi karaktere jasoko ditu, eta lerroz lerro karaktere horien agerpenak zenbatuz joango da. Bukaeran bi karaktere horietatik usuen zein agertu den adieraziko du, agerpen kopuru berbera izan badute hala adieraziz.
    
Exekuzio-adibidea:
 >perl zeinKarGehiago.pl esaeraZaharrak.txt a o
 a (2322) karakterea o (763) baino gehiagotan azaltzen da

     Aurreko adibideak, esaeraZaharrak.txt fitxategiko “a” eta “o” karaktereen agerpen kopuruak zenbatzen ditu.

    Programaren kodea:

zeinKarGehiago.pl
 #!/usr/bin/perl
 use strict;
 use warnings;
 # Fitxategia zabaldu
 open (FI, $ARGV[0]) ||
      die(“Ezin $ARGV[0] fitxategia zabaldu!n”);
 # Bilaketa karaktereak jaso
 my $karBat = $ARGV[1];
 my $karBi = $ARGV[2];
 my $agerpenBat = 0;
 my $agerpenBi = 0;
 my $lerro;
 # Fitxategia lerroz-lerro irakurri
 while ($lerro = <FI>){
      chomp($lerro);
      # Lerroa karakterez-karaktere irakurri
      while ($lerro =~ /($karBat|$karBi)/gi) {
             # Adierazpen erregularraren aukerak:
             # g globala (agerpen guztiak)
             # i letra larri/xeheak ez bereizi
             # bat egitea $karBat edo $karBi-k eragin du?
             if ($1 eq $karBat) {
                   $agerpenBat++;
             }
             if ($1 eq $karBi) {
                   $agerpenBi++;
             }
      }
 }
 if ($agerpenBat > $agerpenBi) {
      print(“$karBat ($agerpenBat) karakterea $karBi
             ($agerpenBi) baino gehiagotan azaltzen dan”);
 }
 elsif ($agerpenBat < $agerpenBi) {
      print(“$karBi ($agerpenBi) karakterea $karBat
             ($agerpenBat) baino gehiagotan azaltzen dan”);
 }
 else {
      print(“$karBat eta $karBi karaktereen agerpen kopurua
               berbera da fitxategian: $agerpenBatn”);
 }
 close (FI);

     Karaktereekin egin berri duguna hitzekin egin nahiko bagenu, programa bera
erabil genezake aldaera txiki batekin: bilaketa-patroiei hitz-mugak jarri beharko
genizkieke aurretik eta atzetik, hitzek osorik bat egin dezaten. Honela:

$lerro =~ /b($hitzBat|$hitzBi)b/

     Egin proba!

Jaitsi   zeinKarGehiago.pl   fitxategia

Utzi erantzuna

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude