18. kasu praktikoa: bilatu eta ordeztu

     Testu-editoreetan horren erabilia den bilatu eta ordeztu funtzioa inplementatuko dugu adierazpen erregularrak erabiliz. Programak sarrerako hiru argumentu izango ditu ondoko programa-deiak erakusten duen bezala:

  >perl ordezkatu.pl esaeraLabur.txt kaixo iepa

     Programak, esaeraLabur.txt fitxategiko kaixo hitzaren agerpen guztiak ordezkatuko ditu iepa hitzarekin. Horrekin batera, egindako ordezkapen kopurua pantailaratu behar du baita.

ordezkatu.pl
 #!/usr/bin/perl
 use warnings;
 use strict;
 # Egiaztatu argumentu kopurua egokia dela
 die(“programak hiru argumentu behar ditu!n”)
      if ($#ARGV != 2);
 open (FITX, $ARGV[0]) ||
      die(“Ezin $ARGV[0] fitxategia zabaldun”);
 my $lerro;
 my $agerpenak;
 while ($lerro = <FITX>) {
       $agerpenak += ($lerro =~ s/$ARGV[1]/$ARGV[2]/ig);
       print $lerro;
 }
 print (“nnOrdezkapen kopurua: $agerpenakn”);

    Programak lerroz lerro irakurtzen du fitxategia ohiko egitura erabiliz. Lerro bakoitzean, ordezkapenak egin eta zenbatzen dituen sententzia hauxe da:
$agerpenak += ($lerro =~ s/$ARGV[1]/$ARGV[2]/ig);

      Idatzi dugun programa, ohiko bilatu eta ordeztu funtzioa baino askoz ahaltsuagoa da, adierazpen erregularrak onartzen baititu bilaketa-patroi gisa. Demagun, adibide bat jartzearren, fitxategi bateko bokal guztiak ordezkatu nahi ditugula “*” jarriz euren lekuan:

 >perl ordezkatu.pl esaeraLabur.txt [aeiou] *
 *d*sk*d*g*b*k* b*z*tz*, **z*g*b*k* h*r**tz*.
 *ld* l*z**k, g*zt** *h*zt*
 …
 Z*h*rr*r* *z *sk* g*r*
 Ordezkapen kopurua: 833
 >

Jaitsi   ordezkatu.pl   fitxategia

Utzi erantzuna

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