Atzizkiak hiztegian nola dauden definituak aztertzen gabiltza. Zehazki, atzizkiak definitzerakoan gehien erabiltzen diren hitzak zein diren jakin nahi dugu. Horretarako, honako programa garatzea otu zaigu: erabiltzaileari atzizki bat idazteko eskatu, eta zehaztutako atzizkia duten hiztegiko sarrera guztien defini-
zioak itzultzen dituena. Baina definizioan erabilitako hitzak maiztasunaren arabera ordenatuta bistaratuko ditu programak. Hau da, atzizki bat eman eta atzizki hori duten sarreren definizioetan erabili diren hitzak itzuliko ditu programak maiztasunaren arabera ordenaturik.
Honako honetan, exekuzio-aldi bakoitzean bilaketa bakarra egingo du programak. Horretaz gain, programaren irteera pantailan osorik ikusteko baino handiagoa izango denez kasu askotan, atzizkia komando-lerroaren bitartez pasatuko diogu programari. Modu honetan programaren irteera fitxategi batera birbidera dezakegu eta ondoren bistaratu.
Adibidez:
>perl EhAtzizkiMaiz.pl tasun > tasun.txt
Programaren exekuzioak, “tasun” atzizkia daukaten sarrerak topatuko ditu, eta beren definizioetan erabilitako hitzak maiztasunaren arabera ordenatuta itzuliko tasun.txt fitxategian. Hona exekuzioaren osteko edukia:
tasun.txt fitxategia
nolakotasuna 491
denaren 406
edo 110
egoera 87
dagoenaren 44
eza 31
…
ditzakeena 1
baitara 1
EhAtzizkiMaiz.pl Perl programaren kodea:
#!/usr/bin/perl
use strict;
use warnings;
my (@eremuak, $lerro, $atzizki, $kategoria, $hitz, %maiz);
open(FI, “EH_hiztek.txt”) ||
die (“Ezin fitxategia zabaldu!n”);
# irakurri atzizkia
$atzizki = $ARGV[0];
while ($lerro = <FI>) {
chomp($lerro);
# Sarrerari dagozkion eremuak gorde array-an
@eremuak = split(/t/, $lerro);
# $atzizki atzizkia eta $kategoria kategoriako
# sarrerak hautatu
if ($eremuak[0] =~ /$atzizki$/) {
# definizio eremua hitzetan banatu
foreach $hitz (split(/W+/, $eremuak[3])) {
# hitz bakoitzaren maiztasuna gorde
$maiz{$hitz}++;
}
}
}
close (FI);
# %maiz egiturako hitzak ordenatu
# maiztasunaren arabera, handienetik txikienera
# ondoren hitz bakoitza eta bere agerpen kop. bistaratu
foreach $hitz (sort({$maiz{$b} <=> $maiz{$a}} (keys
%maiz))) {
print (“$hitzt$maiz{$hitz}n”);