Newsgroup: it.comp.lang.perl
Titolo: Chiarimenti su package e moduli - raggiunti limiti mentali?

Ho letto e riletto di dritto e di rovescio Larry Wall (Programming
Perl ) cercando di capire bene cosa siano i packages e la loro
relazione rispetto ai moduli ma le spiegazioni mi sono sembrate
francamente un po' - come dire - letterarie. Il termine "name space" e
le analogie con la residenza della regina Elisabetta non mi hanno
aiutato. Forse non sono stato sufficientemente attento,  ma, per
esempio,  non ho trovato da nessuna parte una spiegazione tecnica,
sistematica e concisa di cosa sia un package, con pochi esempi ben
fatti. 
Questa incomprensione e' molesta perche' non riesco a capire come
riutilizzare codice in modo coerente e decente e come utilizzare
moduli scritti da altri. Provenendo dal C ho certe aspettative su cosa
sia un modulo che pero' poi trovo frustrate con un meccanismo import -
export che mi risulta farraginoso e incomprensibile (miei limiti,
naturalmente). In particolare se uso una funzione con la notazione
modulo::funzione me la cavo mentre se provo a usare altri meccanismi
l' interprete non risolve.
Siccome quello che ho imparato fin qui del Perl mi piace  (le
espressioni regolari e le hash sono eccezionalmente utili) , mi
chiedevo se qualcuno puo riconciliarmi con Larry Wall, poiche' mi
mancano molto Kernighan e Ritchie. 
Daniele
Daniele
Togliere canc. dall' indirizzo per eventuali repliche in privato.

 Perl ) cercando di capire bene cosa siano i packages [...]
hehehe...
ammetto che quello che stai dicendo e' in parte vero. All'inizio delle mie
esperienze con il perl quel libro mi ha aiutato moltissimo, ma per iniziare
a lavorare seriamente con packages e objects, ho trovato in un altro libro
indcazioni e i necessari chiarimenti.
Il libro in questione e' scritto da due vecchi (si fa per dire) Joseph N.
Hall e Randal L. Schwartz, e si intitola "Effective Perl Programming
(writing better programs with perl)" edito da Addison Wesley.
Semplificare in poche righe il tutto e spiegarti in un messaggio il tutto
non mi risulta facile (magari qualcun'altro ci riesce).
Un package e' un namespace, mentre un modulo e' un determinato tipo di
namespace che:
- e' contenuto in un file con estensione .pm
- definisce un metodo per 'importare' (hehehe, che e' un sublclass di
Exporter)
- definisce una lista di symbols che sono automaticamente esportati e
(opzionale)
  una lista di symbols che possono essere esportati su richiesta.
Un suggerimento? Prova ad usare il comando h2xs dalla linea di comando che
ti permette di creare lo scheletro per un modulo (anche se essendo nato con
altri scopi permette di fare molte piu' cose).
se tu esegui:
h2xs -A -X -n mypackage::mymodule
avrai come risposta una subdir (mypackage) che contiene una barca di roba
inutile (per ora) ed un 'magico' file 
mymodule.pm
.
Apri il file e prova a leggere i commenti che sono contenuti, che ti
possono aiutare.
Se no, scrivimi in privato (
kaz...@energy.it
) che ti mando un mio modulo un
po' commentato...
	Best regards,
		Kazuma
-- 
Alex Garbagnati, 
agarb...@removethis.decisive.com
Sr. Lead Engineer, Product Development
Decisive Technology Corporation
Mountain View, CA  94043