44. kasu praktikoa: atzizki bidezko bilaketa

      Aurreko programa moldatuko dugu, oraingo honek bilaketa-termino gisa atzizki bat eskatuko digu, eta atzizki hori duten hiztegiko sarrerak itzuli beren definizioekin batera. Bilaketa bakoitzaren amaieran, topatutako sarrera kopurua ere bistaratuko du programak.
      Hona hemen, adibide gisa, exekuzio-dei bat:

 >perl EhAtzizki.pl
 Idatzi bilaketarako atzizkia. Amaitzeko sakatu q: tasun
 Hirutasun:           Kristau dotrinan, Jainko bakarraren hiru
 pertsonen batasunaren dogma eta ezkutukia; hiru pertsonako
 Jainkoa bakar hori.
 abadetasun:           Abadetza, abadearen kargua eta egitekoa.
 …
 zuzentasun:           Zuzena denaren nolakotasuna.
 914 sarrera tasun atzizkiarekin bat egiten dutenak
 Idatzi bilaketarako atzizkia. Amaitzeko sakatu q: q

EhAtzizki.pl Perl programaren kodea:

 
#!/usr/bin/perl
 use strict;
 use warnings;
 my (@hiztegia, @eremuak, $lerro, $atzizki, $kont);
 open(FI, “EH_hiztek.txt”) ||
      die (“Ezin EH_hiztek.txt fitxategia zabaldu!n”);
 @hiztegia = <FI>;
 close (FI);
 print(“Idatzi atzizkia. Amaitzeko sakatu q: “);
 $atzizki = <STDIN>;
 chomp($atzizki);
 while ($atzizki ne “q”) {
      $kont = 0;
      # Sarrerari dagozkion eremuak gorde array-an
      foreach my $sarrera (@hiztegia) {
             @eremuak = split(/t/,$sarrera);
             if ($eremuak[0] =~ /$atzizki$/) {
                   $kont++;
                   # Bistaratu sarrera hitza eta bere definizioa
                   print “$eremuak[0]:     “;
                   print “$eremuak[3]n”;
             }
      }
      print(“$kont sarrera $atzizki atzizkiarekin bat
               egiten dutenakn”);
      print(“Idatzi atzizkia. Amaitzeko sakatu q: “);
      $atzizki = <STDIN>;
      chomp($atzizki);

Iruzkinak (1)

  • Atzizki bila webean says:

                    Inoiz gerta daiteke, esaterako, bertsoak
    osatzeko errima bila ari garela, hiztegian aurkituko genituzkeen adibide ugari,
    berezi eta inoiz gutxi erabilien ordez, une jakin batean gaurkotasunik handiena
    duten hitzen artean ze suman aritu nahi izatea. Xede horrekin, hitz bat emanda web
    orri jakinetatik, akaso egunkarien orrietatik, amaiera bereko hitzak emango
    dizkigun programa bat molda genezake, ondokoa kasu.

                    Gainera
    errima aberatsagoa nahiz ez hain aberatsa baliatzeko modua izango dugu, proposatu
    hitzaren azken lau hizki berak dituzten hitzak zein gutxiagoko dituztenak
    aukeratuz.

    Adibidea:

                                   C:UsersRibaryMikelenperl>perl
    Atzizkia_bilatu_webean2.pl

    Nondik hasiko gara?

    http://www.berria.info

    Zer bilatu nahi duzu?

    bertsolari

    0 [2] Mari

    1 [2] hori

    2 [2] ekarri

    3 [2] Agiri

    4 [2] Anzari

    5 [2] emazteari

    6 [2] ari

    7 [2] irakurri

    8 [2] Betagarri

    9 [2] herri

    0 [3] Mari

    1 [3] auziari

    2 [3] Anzari

    3 [3] terrorismoari

    4 [3] emazteari

    5 [3] ari

    0 [4] Bertsolari

     

    #!/usr/bin/perl

    use warnings;

    use strict;

    use LWP::Simple;

     

    my (@bikoak, @hirukoak, @laukoak);

     

    # Bilatu weba;

    print (“Nondik hasiko gara?n”);

    my $html = <STDIN>;

    chomp $html;

     

    print (“Zer bilatu nahi
    duzu?n”);

    my $hitza = <STDIN>;

    chomp $hitza;

    # Hitzaren bukaerako zenbat karaktere.

    $hitza =~ /(..)$/;

    my $errima2 = $1;

     

    $hitza =~ /(…)$/;

    my $errima3 = $1;

     

    $hitza =~ /(….)$/;

    my $errima4 = $1;

     

    my $weba = get (“http://” .
    $html);

     

    # Hitzen zerrenda lortu;

    my @hitzak = split (/[W]+/, $weba);

     

    foreach my $hitz (@hitzak) {

                                   #
    Errima hitz bukaeran topatu;

                                   if
    (($hitz =~ /$errima4$/) && !(badauka($hitz, @laukoak))) {

                                   push
    (@laukoak, $hitz);

                                   }

                                   elsif
    (($hitz =~ /$errima3$/) && !(badauka($hitz, @hirukoak))) {

                                   push
    (@hirukoak, $hitz);

                                   }

                                   elsif
    (($hitz =~ /$errima2$/) && !(badauka($hitz, @bikoak))) {

                                   push
    (@bikoak, $hitz);

                                   }

                    }

    for (my $i=0; $i<=$#bikoak; $i++) {

                                   print(“$i
    [2] $bikoak[$i]n”);

                    }

    for (my $i=0; $i<=$#hirukoak; $i++) {

                                   print(“$i
    [3] $hirukoak[$i]n”);

                    }

                    for
    (my $i=0; $i<=$#laukoak; $i++) {

                                   print(“$i
    [4] $laukoak[$i]n”);

                    }

     

    sub badauka {

                    my
    $h = shift();

                    my
    @taula = @_ ;

                    my
    $emaitza = 0;

                    foreach
    my $helbide_bat (@taula) {

                                                   if
    ($h =~ /$helbide_bat/) { $emaitza = 1;

                                                   }

                                                   }

                    return
    $emaitza; }

Utzi erantzuna

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