Copyright © 1997
Universita'di Firenze. All rights reserved.
Free license available.
Corso di Telematica
Manuale d'uso di CREAINDEX
a cura di Vincenzo
Chiummariello, Giuseppe
Migliarese
Revisori: Ing. Claudio
Bizzarri, Prof.
Franco Pirri
Ultimo aggiornamento: 8/2/1998
Sommario
Questo documento illustra, in modo schematico ma esauriente,
le funzionalità, il modo di utilizzo, le opzioni sulla riga di comando
e le librerie dello script creaindex, realizzato per l'indicizzazione di
parole-chiave all'interno di documenti HTML (presumibilmente situati su
Server Web).
-
Introduzione
Come installare lo script Perl CREAINDEX
Requisiti dello script Perl CREAINDEX
Tipologie dei file creati:
Come usare lo script: opzioni sulla riga di comando
Prima modalità:
Seconda modalità:
Esempi di righe di comando:
Breve descrizione delle librerie associate:
Introduzione
Nella rete Internet esistono numerosissimi Server che
mettono a disposizione pagine Web di natura e contenuti molto diversi.
Per cercare di ridurre il tempo di ricerca delle informazioni
che interessano, consentendo così un risparmio economico e una riduzione
del traffico nei collegamenti in rete, sarebbe molto utile avere a disposizione
appositi indici, disponibili sul server stesso, in cui trovare delle parole-chiave
che indirizzino ai documenti HTML di interesse.
Il nostro lavoro, andando in questa direzione, è
sfociato nella realizzazione dello script creaindex, avente
come obiettivo finale proprio la creazione di un insieme di indici ordinati,
ottenuti elaborando opportunamente i documenti HTML presenti sul sito.
Come installare lo script Perl creaindex
Lo script creaindex si trova compattato, unitamente alle
sue librerie.pl e al presente manuale d'uso.html, nell'archivio
creaindex.tgz.
In questo formato è possibile scaricarlo dalla Rete agevolmente,
per poi scompattarlo (con tar o WinZip) nella directory desiderata.
Bisogna però tener presente che lo script creaindex
(ma non le librerie associate) deve essere inteso come un comando Unix
e pertanto deve essere posizionato in una directory tipo /usr/local/bin,
visibile dal path di ricerca del sistema operativo locale. Inoltre, deve
eventualmente essere eseguibile da tutti e da qualsiasi parte del sistema
(ciò si ottiene usando opportunamente il comando Unix chmod).
Le librerie invece possono
essere sistemate in qualsiasi directory leggibile dallo script creaindex.
Per poterle usare bisogna aprire in scrittura il file creaindex con un
normale editor di testo e aggiornare la variabile perl $pathlibrerie,
che si trova nelle prime linee dello script, con il nuovo path assoluto
(dalla radice del sistema alla directory in cui sono memorizzate). In questo
modo vengono aggiornati automaticamente tutti i percorsi delle librerie,
rendendole così funzionanti.
E' chiaro che, essendo il Perl un linguaggio interpretato,
per poter usare lo script è necessario disporre dell'interprete
perl: creaindex è stato realizzato usando il PERL 4.x per il sistema
UNIX.
N.B: In teoria si potrebbe usare anche la versione
WINPERL 4.x per sistemi Windows, a patto di:
-
modificare la libreria conv_htm_lib.pl laddove è stata
usata la funzione chr(nn), che è risultata essere incompatibile
con tale versione.
-
inserire i parametri, invece che sulla linea di comando,
all'inizio del MAIN dello script creaindex, assegnandoli all'array predefinito
@ARGV (si è lasciata volutamente una traccia nel codice sorgente
dello script).
Requisiti dello script Perl creaindex
Lo script creaindex, come già detto, è
stato realizzato in Perl 4.x e gira sotto il sistema UNIX; per il suo funzionamento
ha necessariamente bisogno delle seguenti librerie:
Queste librerie, costruite ad hoc per creaindex,
sono comunque indipendenti, nel senso che possono essere usate in diversi
contesti da altri script, con la sola condizione di passare ad esse in
modo corretto i parametri di funzionamento (come approfondiremo più
avanti).
Tipologie dei file creati
Lo script, nel suo uso più generale, partendo da
una directory-radice di un sottoalbero, costruisce un pseudo-albero gemello,
le cui directory rispettino la gerarchia del sottoalbero di partenza.
Nel caso la directory esaminata contenga uno o più
documenti HTML (cioè con estensione html, htm o shtml, con alcune
o tutte le lettere minuscole o maiuscole, ovvero non case-sensitive)
nella pseudo-directory corrispondente vengono creati i vari file indici
in formato testo in seguito descritti.
La corretta creazione di questi file indici richiede
necessariamente l'interazione con un web-master (o con un utente
in generale), almeno in una prima fase, per scegliere le parole ritenute
interessanti nel contesto del sottoalbero scandito.
La tipologia dei file creati è qui di seguito
riportata:
-
nomedir_int.txt: file testo contenente,
dopo un breve commento informativo, l'elenco alfabeticamente ordinato delle
parole ritenute interessanti dall'utente per i file HTML presenti nella
directory 'nomedir'.
Tale file viene creato in ogni pseudo-directory (contenente
almeno un file HTML) ereditandolo eventualmente dalla prima delle pseudo-directory
superiori che già lo contiene.
Il nome del file è stato ottenuto aggiungendo
al nome della directory in questione il postfisso '_int.txt'.
Esempio di nomedir_int.txt
-
nomedir_nonint.txt: file testo
contenente, dopo un breve commento informativo, l'elenco alfabeticamente
ordinato delle parole ritenute non interessanti dall'utente per i file
HTML presenti nella directory 'nomedir'.
Tale file viene creato in ogni pseudo-directory (contenente
almeno un file HTML) ereditandolo eventualmente dalla prima delle pseudo-directory
superiori che già lo contiene.
Il nome del file è stato ottenuto aggiungendo
al nome della directory in questione il postfisso '_nonint.txt'.
Esempio di nomedir_nonint.txt
-
nomefile.html_iloc.txt: file
indice locale di testo contenente, dopo un breve commento informativo,
l'elenco alfabeticamente ordinato delle coppie 'parola (interessante),
occorrenza (nel file)' relative a ciascun file HTML presente nella directory
esaminata.
Le parole interessanti sono state tratte dal file 'nomedir_int.txt'
contenente le parole di interesse della directory in cui sono memorizzati
i documenti HTML.
Il nome del file è stato formato aggiungendo al
nome del file HTML esaminato il postfisso '_iloc.txt'.
Esempio di nomefile.html_iloc.txt
-
nomedir_indgen.txt: file
indice generale di testo contenente, dopo un breve commento informativo,
l'elenco alfabeticamente ordinato delle terne 'parola (interessante), occorrenza
(in nomefile HTML), percorso/nomefile HTML'.
Le parole interessanti e le relative occorrenze sono
state tratte dal file di indice locale relativo a ciascun documento HTML
presente nella directory 'nomedir' esaminata e referenziato in 'nomefile
HTML' con il suo persorso.
Il nome del file è stato formato aggiungendo al
nome della directory il postfisso '_indgen.txt'.
Esempio di nomedir_indgen.txt
-
nomedir_limbo.txt: file limbo
generale di testo contenente, dopo un breve commento informativo, l'elenco
delle terne 'parola (dubbia), occorrenza (in nomefile HTML), percorso/nomefile
HTML'.
Le parole dubbie sono quelle che non sono state classificate
ancora nè come interessanti né come non interessanti nei
file HTML referenziati in 'nomefile HTML' con il loro percorso e appartenenti
alla directory 'nomedir' esaminata.
Il nome del file è stato ottenuto aggiungendo
al nome della directory il postfisso '_limbo.txt'.
Esempio di nomedir_limbo.txt
-
indiceglobale.txt: file
indice globale di testo relativo al sottoalbero di directory esaminato
contenente, dopo un breve commento informativo, l'elenco alfabeticamente
ordinato delle terne 'parola (interessante), occorrenza (in nomefile HTML),
percorso/nomefile.html'.
Ciascuna terna è stata tratta dal file di indice
generale della directory contenente il documento HTML referenziato, con
il suo percorso, in 'nomefile.html', che in questo caso è un generico
file HTML del sottoalbero preso in considerazione per la costruzione dell'indice
globale.
Esempio di indiceglobale.txt
Come usare lo script: opzioni sulla riga di comando
Lo script viene attivato digitando un'opportuna riga al
prompt dei comandi.
Il generico formato della riga di comando è:
creaindex -r | -d | -f pathinput[nomefile] -o | -p
pathoutput [-b] [-g] [-i] [-v]
I parametri devono essere preceduti da un trattino (-)
ed essere separati tra di essi e rispetto ai loro eventuali argomenti da
uno spazio.
Lo script funziona in due modalità differenti,
in base alla presenza o meno del parametro -i nella riga di comando:
Prima modalità di funzionamento:
assenza del parametro -i
1) vengono esaminati, in base ai parametri inseriti
nella riga di comando (di seguito esposti), un file HTML o una directory
o un albero di directory nel percorso specificato in 'pathinput';
2) nel caso in cui si esamina una directory vengono ricercati
in essa, ed in seguito processati, i file con estensione .html, .htm o
.shtml (le estensioni ed i nomi dei file possono contenere sia lettere
minuscole che maiuscole, cioè la ricerca non è case-sensitive);
3) infine, per ogni file esaminato vengono scritti i
relativi file indici nel percorso specificato in 'pathoutput'.
Parametri di input: -f | -d |
-r pathinput[nomefile.html]
-
-f pathinput/nomefile.html: viene esaminato
solo il file HTML indicato in 'nomefile.html'.
In base all'elaborazione del file.html verranno creati tutti
i file indici sopra esposti (tranne gli indici
globale e generale) e scritti nella directory di output (specificata in
pathoutput, dopo -o), che deve essere necessariamente inserita.
-
-d pathinput: vengono scanditi
i file HTML della sola directory specificata in 'pathinput', creando una
pseudo-directory in 'pathoutput' in cui scrivere tutti i file indici risultanti.
-
-r pathinput: vengono esaminati
tutti i file HTML contenuti nel sottoalbero avente per radice 'pathinput',
creando un pseudo-albero (gemello di quello esaminato) che conterrà
le pseudo-directory e tutti i file indici relativi.
Parametri di output: -o | -p
pathoutput
-
-o pathoutput: nella directory specificata in 'pathoutput'
viene creata una pseudo-directory (se l'opzione di input è -d)
o un pseudo-albero di directory (se l'opzione di input è -r),
in cui vengono memorizzati i file indici creati dallo script in base all'elaborazione
dei file HTML presenti nelle varie directory, alle quali vengono assegnati
gli stessi nomi delle rispettive directory di input esaminate.
-
-p pathoutput: come il parametro -o, ma in
questo caso il nome assegnato alle pseudo-directory è ottenuto aggiungendo
a quello delle directory di origine la stringa finale '_pseudo'.
Parametri funzionali:
[-b] [-g] [-v]
-
-b (modalità batch): quando è presente
sulla riga di comando, fa sì che l'esecuzione dello script avvenga
senza interazione con l'utente. Si consiglia di usare questa opzione solo
dopo la creazione dei file contenenti le parole di interesse e di non interesse,
cioè dopo aver già lanciato lo script ed interagito con esso
almeno una volta.
N.B: se l'opzione -b non è stata specificata
sulla riga di comando viene scritto, sia a video che nella testata informativa
di tutti i file testo generati (esclusi i file contenenti le parole interessanti
e non interessanti), un avviso che consiglia di rieseguire lo script in
modalità batch per rendere effettivi i cambiamenti effettuati a
tutti i file indici.
-
-g (parametro globale): abilita la creazione dell'indice
globale runtime, ciòe durante la scansione dei file HTML.
Se non è presente questa opzione, durante l'esame dei documenti
HTML l'indice globale non viene creato.
-
-v (modalità verbose):
abilita la visualizzazione dei messaggi che descrivono lo stato di esecuzione
dello script passo dopo passo. Se non è presente questa opzione,
durante l'esame dei documenti HTML non viene visualizzato alcun commento.
Seconda modalità di funzionamento:
presenza del parametro -i
Vengono scandite le pseudo-directory, specificate però
adesso in 'pathinput', alla ricerca dei file di indice
generale in base ai quali costruire il file di indice
globale che verrà scritto nella directory specificata in 'pathoutput'.
I parametri possibili sono uguali a quelli della prima
modalità (tranne l'opzione -f), ma cambiano di significato,
come illustrato di seguito.
Parametri di input: -d | -r pathinput
-
-d pathinput: viene scandita solo la pseudo-directory
indicata nel path di input; il file di indice generale in essa contenuto
viene aggiunto al file di indice globale già esistente (oppure creato)
nel path di output.
-
-r pathinput: vengono considerati tutti i file di
indice generale contenuti nel pseudo-albero avente per radice il path di
input; il contenuto degli indici generali viene inserito nel file di indice
globale, che verrà scritto in 'pathoutput'.
Parametri di output: -o | -p
pathoutput.
-
-o pathoutput: specifica la directory
in cui scrivere il file di indice globale.
-
-p pathoutput: come il parametro -o
Osservazioni
sulla seconda modalità:
-
Se il path di output non viene specificato, come default
viene presa la directory indicata in 'pathinput'. In altre parole, se non
viene specificata la directory in cui creare l'indice globale, questo verrà
scritto nella directory o nella radice del sottoalbero esaminato, passata
come parametro di input.
-
Se è presente il parametro -i, i parametri
funzionali -b e -g perdono il loro effetto, mentre il
parametro -v lo mantiene.
Illustriamo ora in dettaglio il funzionamento dello script
con degli esempi, partendo sempre dalla riga di comando:
1) creaindex -f /home/rkey.html
-o /giuseppe/
In questo caso viene esaminato il file rkey.html,
che si trova nella directory di input home, e vengono creati nella
directory di output giuseppe i seguenti file
indici di testo:
-
home_int.txt: contiene le parole interessanti della
directory già decise dall'utente.
-
home_nonint.txt: contiene le parole non interessanti
della directory già decise dall'utente.
-
rkey.html_iloc.txt: contiene le coppie 'parola (interessante),
occorrenza (nel file)' relative al file rkey.html
-
home_limbo.txt: contiene le terne 'parola (dubbia),
occorrenza (nel file), home/rkey.html', cioè le parole non ancora
vagliate dall'utente tra quelle tratte dal testo del documento rkey.html.
Come opera lo script in questo caso?
-
In base al nome della directory
e del file HTML vengono generati i nomi da attribuire ai file.txt di output,
come abbiamo già visto precedentemente.
-
Vengono creati i file di testo per le parole interessanti
(home_int.txt) e non interessanti (home_nonint.txt). Se gli stessi tipi
di file esistono in una delle directory superiori (in questo caso la root
del sistema) rispetto quella di output (/giuseppe/), vengono ricopiati
e rinominati in quest'ultima directory, secondo un meccanismo di "ereditarietà".
-
Il contenuto del file rkey.html viene "ripulito" dai tag
del linguaggio HTML, vengono convertite le sequenze di escape ed
il testo rimanente, trasformato in minuscolo e scomposto in parole (stringhe
alfanumeriche), è memorizzato nell'array (vettore) 'lista_ordinata'
secondo un ordine alfabetico.
-
Vengono eliminate dal vettore 'lista_ordinata' le parole
non interessanti, prese dal file 'home_nonint.txt', e le parole interessanti
, prese da 'home_int.txt'. Le parole interessanti vengono memorizzate,
con le relative occorrenze, nell'array 'trovate', che alla fine servirà
a scrivere l'indice locale 'rkey.html_iloc.txt'. Le parole rimanenti in
'lista_ordinata' dovranno essere processate dall'utente per decidere se
sono interessanti o meno. E' chiaro che, se inizialmente i file delle parole
interessanti e non interessanti sono vuoti, nulla verrà eliminato
dall'array 'lista ordinata', cosicchè l'utente dovrà decidere
su tutte le parole inizialmente ricavate dal documento rkey.html.
-
A questo punto vengono proposte una per una all'utente le
parole rimaste nel vettore 'lista_ordinata', presentando per ogni
parola esaminata quattro possibili opzioni:
-
sì (s): la parola è ritenuta
interessante, allora viene eliminata dal vettore 'lista_ordinata', inserita
nell'array 'trovate' insieme alla relativa occorrenza, ed aggiunta al file
delle parole interessanti.
-
no (n): la parola non è ritenuta interessante,
allora viene eliminata dall'array 'lista_ordinata' ed aggiunta al file
delle parole non interessanti.
-
limbo (l): la parola è dubbia, non si
sa ancora se è importante o meno; allora non verrà eliminata,
ma rimarrà nell'array 'lista_ordinata' ed in seguito sarà
memorizzata nel file limbo, quando la procedura di decisione sarà
terminata.
-
basta (b): l'utente vuole smettere di vagliare
le parole; viene così terminata questa fase interattiva e le parole
rimanenti nell'array 'lista_ordinata' verranno scritte nel file limbo.
-
Finito l'esame delle parole vengono riscritti tutti i file
di testo eventualmente modificati e l'esecuzione dello script termina.
2) creaindex -d /home/ -p /giuseppe/
In questo caso viene scandita la directory home
alla ricerca dei file HTML in essa contenuti, creando nella directory /giuseppe/
la pseudo-directory home_pseudo in cui verranno memorizzati,
con percorso assoluto, i seguenti file d'output:
-
/giuseppe/home_pseudo/home_int.txt: file contenente
le parole della directory di input 'home' ritenute interessanti.
-
/giuseppe/home_pseudo/home_nonint.txt: file contenente
le parole della directory di input 'home' ritenute non interessanti.
-
/giuseppe/home_pseudo/home_limbo.txt: file contenente
le parole dubbie rimaste della directory di input 'home'.
-
/giuseppe/home_pseudo/nomefile.html_iloc.txt: file
di indice locale per il generico documento HTML 'nomefile.html' trovato
nella directory 'home'.
-
/giuseppe/home_pseudo/home_indgen.txt: file di indice
generale contenente tutte le parole interessanti memorizzate negli indici
locali della directory 'home'.
-
Per ogni file HTML trovato nella directory di input 'home'
vengono eseguiti tutti i passi descritti sopra
nell'esempio 1.
-
Il file di indice globale non viene generato in quanto l'opzione
-g non è presente.
3) creaindex -r /home/ -p /giuseppe/
-
In questo caso vengono scandite tutte le directory dell'albero
avente come radice la directory home alla ricerca di file HTML.
Durante la scansione viene "replicato" nella directory giuseppe un
pseudo-albero nel quale verranno memorizzati tutti i file di output relativi
ai documenti HTML trovati e alle directory esaminate, così come
descritto precedentemente nell'esempio 2 per una
sola directory.
-
Per ogni file.htm trovato vengono eseguite tutte le operazioni
sopra descritte nei passi dell'esempio1.
-
Il file di indice globale non viene generato in quanto l'opzione
-g non è presente.
4) creaindex -r /home/ -p /giuseppe/ -g
-
In questo caso lo script esegue le stesse operazioni descritte
precedentemente nell'esempio
3, con in più la costruzione dell'indice
globale (dovuta alla presenza dell'opzione -g
sulla riga di comando) realizzata in modo concomitante all'analisi dei
file HTML.
-
Il file di indice globale viene aggiornato utilizzando il
file di indice generale dell'ultima directory
esaminata, è memorizzato nella directory di output giuseppe
e alla fine dell'elaborazione contiene tutte le parole interessanti, con
le relative occorrenze e con il riferimento al documento HTML in cui sono
state trovate.
L'indice globale si riferisce a tutto il sottoalbero
di /home/ esaminato.
5) creaindex -r /home/ -p /giuseppe/ -b
-
Come nell'esempio 3, però non
ci sarà l'interazione con l'utente, essendo presente il parametro
-b.
In altre parole, quando verrà esaminato un file
HTML trovato in un qualsiasi punto del sottoalbero con root home,
verranno eseguiti solo i passi a .. c
dell'esempio 1
sopra descritto, e verranno riscritti i file testo di indice generale e
di limbo.
-
Se si fosse specificata anche l'opzione -g , sarebbe
stato costruito anche l'indice globale (come spiegato nel passo b
dell'esempio 4).
6) creaindex -r /giuseppe/ -p /www/ -i
In questo caso, essendo presente l'opzione -i
, per la costruzione dell'indice globale non
vengono utilizzati più i file HTML, ma direttamente i file di indice
generale. Vengono infatti scandite la directory giuseppe e tutte
le sue sottodirectory alla ricerca dei file di testo terminanti con la
stringa 'indgen.txt', che sono proprio gli indici generali. Quando il programma
ne trova uno, inserisce il suo contenuto nel file di indice globale, eliminando
le eventuali ripetizioni e ordinando con criterio alfabetico le parole
e in modo decrescente le occorrenze.
L'indice globale viene scritto nella directory d'output
www, come specificato sulla riga di comando.
N.B: viene presa per default l'opzione -b;
l'opzione -g, anche se presente, viene ignorata.
7) creaindex -r /home/ -i
In questo caso non è stata specificata la directory
di output in cui scrivere il file di indice globale, allora per default
la directory di input diventa anche quella di output: in pratica, il file
indiceglobale.txt verrà scritto nella root home.
Per il resto vale quanto illustrato precedentemente nell'esempio
6.
Breve descrizione delle librerie associate
Nozioni preliminari sulle
librerie: input, output, subroutine
Ogni libreria, per svolgere correttamente la sua funzione,
ha bisogno di alcuni dati forniti dall’esterno (in questo caso dallo script
che la richiama) che ne costituiscono l’input. Tali dati devono
essere passati necessariamente nella giusta sequenza, altrimenti la libreria
potrebbe fornire risultati errati o addirittura non funzionare.
Inoltre, durante la sua esecuzione, la libreria produce
alcuni dati che ne rappresentano l'output e che al termine verranno
restituiti, di nuovo secondo una sequenza prestabilita, allo script chiamante.
Ogni script libreria contiene poi delle subroutine
(sotto-programmi) interne che svolgono parte del lavoro o delle funzioni
assegnate alla libreria stessa.
Ad esempio, la libreria calls_lib.pl
contiene due subroutine interne: 'calls' e 'verifica'.
La subroutine 'verifica', come suggerisce il nome stesso,
svolge il compito di verificare l’esistenza dei file di testo contenenti
le parole interessanti e non interessanti ed eventualmente di ereditarli
dalla prima tra le directory superiori che già li contenga o di
crearli ex-novo.
La subroutine 'calls' è invece il sotto-programma
principale, i cui parametri di input e di output sono gli stessi della
libreria; essa definisce i nomi dei file testo da creare e, come suggerisce
il nome stesso, richiama le altre librerie in base alle opzioni specificate
sulla riga di comando.
Il risultato complessivo di queste due subroutine è
lo svolgimento dei compiti assegnati alla libreria stessa. L’esecuzione
delle subroutine e delle librerie è comunque trasparente all’utente,
che non si accorge di nulla circa la loro esecuzione, se non dei dati che
vengono eventualmente visualizzati di volta in volta a video (opzione -v).
Osserviamo infine che in certi casi un subroutine, così
come una libreria più in generale, può non avere output.
Script CALLS_LIB.PL
La libreria calls_lib.pl attiva i seguenti script
(librerie):
Calls_lib.pl viene attivata direttamente dallo script principale
creaindex ed ha le seguenti funzioni:
-
crea i nomi di tutti i file di testo che verranno generati
nel corso dell'esecuzione del programma.
-
crea i file contenenti le parole di interesse e di non interesse,
eventualmente ereditandoli dalla prima directory superiore che già
li contiene (si risale fino alla radice).
-
chiama (calls), con la giusta sequenza e rispettando
le opzioni specificate sulla riga di comando, le altre librerie sopra scritte,
passando loro i parametri opportuni.
Input di calls_lib.pl:
-
nome del file HTML su cui eseguire le operazioni previste.
-
nome della pseudo-directory nella quale memorizzare i file
di testo creati.
-
opzione di input sulla riga di comando
(-f,-d,-r): se è uguale a -f non si deve creare l’indice
generale.
-
l'opzione -v se presente sulla riga
di comando, altrimenti una stringa vuota. Serve ad abilitare la visualizzazione
dei messaggi durante l'esecuzione dello script.
-
l’opzione -b se presente sulla
riga di comando, altrimenti una stringa vuota. Serve ad evitare l’interazione
con l’utente per l’aggiornamento dei file di testo.
-
percorso librerie: viene passato
direttamente come parametro interno (modificabile manualmente) dallo script
chiamante per evitare all’utente di dover cambiare il percorso di tutte
le librerie attivate da calls_lib.pl, nel caso sia stato cambiato il loro
posto nel sistema.
Output di calls_lib.pl:
La libreria restituisce allo script chiamante il nome
assegnato al file di indice generale per permettere così, nel caso
sia presente l’opzione -g, la costruzione runtime
del file di indice globale.
Script CONV_HTM_LIB.PL
La libreria conv_htm_lib.pl viene attivata dallo
script calls_lib.pl ed ha le
seguenti caratteristiche:
-
Ha come input un file HTML corredato del suo path assoluto.
-
Legge tale file riga per riga e attiva delle subroutine interne
che svolgono le seguenti operazioni:
-
Eliminare i tag e fare le opportune conversioni delle
sequenze di escape, ottenendo un testo "pulito" (da cui il nome
conv_htm).
-
Scomporre tale testo in parole, contandone le occorrenze
e ordinandole alfabeticamente.
-
Insererire queste parole con le relative occorrenze nel vettore
'lista_ordinata'.
-
Ha come output un array (non associativo) con le parole
e le occorrenze nella forma: 'parola1,occorrenza1,parola2,occorrenza2,...'.
Script MANIPOLA_LIB.PL
La libreria manipola_lib.pl viene attivata dallo
script calls_lib.pl, da cui riceve in input i seguenti
parametri:
-
percorso assoluto e nome del file di testo contenente le
parole interessanti.
-
percorso assoluto e nome del file di testo contenente le
parole non interessanti.
-
percorso assoluto e nome del file di testo che rappresenta
l’indice locale del file HTML esaminato.
-
l’array associativo 'listaass', creato a partire dal vettore
'lista_ordinata' e restituito allo script 'calls_lib.pl' dalla libreria
'conv_htm_lib.pl', proveniente dalla scomposizione
del file HTML.
(Nota: l'array
associativo è un particolare vettore composto dalle coppie 'chiave,
informazione';
nel nostro caso, la chiave è la parola, mentre
l'informazione associata è l'occorrenza della parola-chiave nel
file HTML).
Lo scopo di manipola_lib.pl è sostanzialmente quello
di eliminare dall’array associativo le parole interessanti e non interessanti
contenute rispettivamente nei file nomedir_int.txt e
nomedir_nonint.txt.
Inoltre le parole interessanti, trovate ed eliminate dal
vettore, vengono memorizzate nel file nomefile.html_iloc.txt,
creato dallo script stesso che al termine dell'esecuzione restituisce
alla libreria chiamante l'array 'listaass' contenente le parole rimanenti.
Script AGGIORNAIND_LIB.PL
La libreria aggiornaind_lib.pl viene attivata da
calls_lib.pl, appena termina l'esecuzione della libreria
manipola_lib.pl, solo nel caso siano rimaste delle
parole nell'array associativo 'listaass'
e l'utente desideri esaminarle.
Se è presente sulla riga di comando l'opzione
-b, questo script non viene eseguito, ma si passa
direttamente all'esecuzione dello script indgen_lib.pl
(descritto più avanti).
Aggiornaind_lib.pl riceve come input i seguenti parametri:
-
percorso assoluto e nome del file di testo contenente le
parole interessanti.
-
percorso assoluto e nome del file di testo contenente le
parole non interessanti.
-
percorso assoluto e nome del file testo di indice
locale relativo al file HTML esaminato.
-
l'array associativo 'listaass' contenente le coppie 'parola,
occorrenza' rimaste che devono essere ancora vagliate dall'utente o dal
web-administrator.
La funzione di aggiornaind_lib.pl è proprio quella
di sottoporre all'utente le parole dubbie rimaste e in base alle sue scelte
eliminarle dal vettore associativo (passatogli come argomento), per aggiornare
poi opportunamente i file testo delle parole interessanti, non interessanti
e l'indice locale.
L'output restituito è un'array contenente le parole
rimaste, cioè quelle che l'utente non ha voluto per il momento vagliare,
e che verranno scritte nel file limbo dall'apposita
libreria (limbogen_lib.pl).
Script INDGEN_LIB.PL
La libreria indgen_lib.pl viene attivata da calls_lib.pl
(se l'opzione di input non è -f).
Come parametri di input deve ricevere:
-
path assoluto e nome del file di indice
generale.
-
path assoluto e nome del file HTML esaminato.
-
l'opzione -b se presente sulla
riga di comando, altrimenti una stringa vuota. Se non è presente
bisogna scrivere un avviso nel file di indice generale per invitare a rieseguire
lo script in modalità batch e rendere così effettivi tutti
i cambiamenti apportati ai file indici.
-
array contenente le coppie 'parola (interessante),occorrenza'
memorizzate nell'indice locale da aggiungere all'indice
generale.
Lo script riceve quindi in ingresso l'array delle parole
interessanti dell'ultimo file HTML esaminato, al quale aggiunge il contenuto
del file indice generale già esistente (in caso contrario lo crea
vuoto).
Il vettore viene poi ripulito dalle possibili ripetizioni
(sicuramente presenti se lo script viene lanciato più volte). Infine
si ordina l'array - alfabeticamente rispetto le parole e in modo decrescente
rispetto le occorrenze - e lo si memorizza nel file di indice generale,
che risulta così riscritto.
La libreria non ritorna nulla in output allo script chiamante.
Script LIMBOGEN_LIB.PL
La libreria limbogen_lib.pl viene attivata da calls_lib.pl
subito dopo indgen_lib.pl.
Il suo input è costituito da:
-
path assoluto e nome del file limbo.
-
path assoluto e nome del file HTML esaminato.
-
path assoluto e nome del file di indice
generale.
-
path assoluto e nome del file contenente le parole
non interessanti.
-
l'opzione -b se presente sulla
riga di comando, altrimenti una stringa vuota. Se non è presente
bisogna scrivere un avviso nel file limbo per ricordare di rieseguire lo
script in modalità batch, rendendo così effettivi tutti i
cambiamenti apportati ai file indici.
-
l'array contenente le coppie 'parola (dubbia),occorrenza'
da scrivere nel file limbo.
Lo script esegue le seguenti operazioni:
-
Riceve in ingresso l'array delle parole dubbie dell'ultimo
file HTML esaminato, a cui aggiunge il contenuto del file limbo esistente.
-
Elimina da questo array le parole che si trovano nell'indice
generale e nel file delle parole non interessanti.
-
Ordina alfabeticamente le parole e in modo decrescente le
occorrenze nell'array, aggiornando il file limbo.
La libreria non restituisce nulla in output allo script chiamante.
Script GLOBALE_LIB.PL
La libreria globale_lib.pl viene richiamata dallo
script principale creaindex quando sulla riga di comando è
presente l'opzione -g oppure l'opzione -i.
I parametri di input passati sono:
-
path assoluto e nome dei file di indice
generale.
-
path_assoluto/indiceglobale.txt: nome del file di indice
globale con il suo percorso.
-
La radice del sottoalbero a cui si riferisce l'indice globale.
-
l'opzione -b se presente sulla
riga di comando, altrimenti una stringa vuota. Se non è presente
bisogna scrivere un avviso nel file di indice globale per consigliare di
rieseguire lo script in modalità batch e rendere così effettivi
tutti i cambiamenti apportati ai file indici.
Lo scopo dello script è, come suggerisce il suo nome,
quello di scrivere l'indice globale e per far ciò svolge i seguenti
passi:
-
crea l'array 'indglobale' con i dati del file di indice globale
ai quali aggiunge quelli contenuti nel file di indice generale.
-
verifica che non vi siano doppioni o ripetizioni.
-
ordina l'array alfabeticamente rispetto le parole e in modo
decrescente rispetto le occorrenze, riscrivendo infine il file di
indice globale.
La libreria non ritorna nulla in output allo script chiamante.
Explore the TELEMAT Site !!!!