Newsgroup: it.comp.lang.perl
Titolo: confuso su moduli e package

Sarò breve:
My Package.pm:
----------------
#!/usr/bin/perl -w
use strict;
use vars qw(@ISA @EXPORT);
use Exporter;
@ISA = ('Exporter');
@EXPORT = qw( @arrayina );
my @arrayina = ( 1,2,3,4,5);
1;
----------------
main.pl
----------------
#!/usr/bin/perl -w
use MyPackage;
print @arrayina;
----------------
risultato:
----------------
C:\temp\perltest>perl 
main.pl
Name "main::arrayina" used only once: possible typo at 
main.pl
 line 7.
----------------
come cacchio esporto la mia array in modo che la vedano da fuori?
grazie
Luca

vedo che modificando questa nel package tutto funziona:
our @arrayina = ( 1,2,3,4,5);
il che significa (correggettemi se sbaglio) che dichiarando la variabile come
"our" la si piazza tra le variabili globali e il Perl ci arriva. Sbaglio?
andava fatto in un altro modo?  è obbligatorio disimparare il Java per lavorare
con Perl?
Luca


 lavorare con Perl?
No, ma può aiutare.

 No, ma può aiutare.
ti sei dimenticato un sorrisetto, oppure dici seriamente ;)
grazie ancora
Luca

 ti sei dimenticato un sorrisetto, oppure dici seriamente ;)
Tra il serio e il faceto, diciamo ;-)
P.S.
Un'altra preziosa risorsa per i quesiti di tipo tecnico è la mailing list 
nazionale:
http://lists.perl.it/sympa/info/mongers
e poi, se fossi interessato, ci sono anche le mailing list (e le altre 
iniziative) dei gruppi locali, come quello romano:
http://roma.pm.org/
Ciao!


Grazie molto delle risorse. Alcune considerazioni generali (e spero di non
suonare offensivo per nessuno, ma solo di portare un punto di vista il più
possibile aperto di uno che guarda Perl da fuori).
Perl è un linguaggio interessante, da cui in passato ho imparato molto, incluso
a essere critico verso il javismo esasperato dei pattern, delle factory e di
duemila cazzi per cui cose semplici prendono mesi.
Detto questo, per progetti "enterprise", non si può guardare a Perl. Perl è
perfetto per programmini pontenti ma scritti in modo quick&dirty. Qualsiasi cosa
più enterprise con prospettive di essere manutenute sul lungo periodo, bisogna
guardare a Java o, al limite, C#/.Net se si è in ambiente microsoft.
Ma vado oltre, anche per chi vuole rimanere in ambito scripting per
l'enterprise, ci sono PHP, Python e ovviamente Ruby che vengono prima di Perl.
Il problma di perl è che ci sono così tanti modi diversi di fare la stessa cosa
che ognuno se la fa come cacchio gli pare e un altro non riesce a metterci le
mani (e spesso neanche a capire cosa fa il codice).
Tra l'altro non ho capito come mai Perl non sia riuscito a conquistare il posto
che è di Ruby on Rails. Eppure i presupposti c'erano tutti.
Insomma, quello che voglio dire è che di cose interessanti da imparare in questo
nostro mondo ce ne sono tante. Il ritorno economico di ciò che si impara è però
modesto. Quindi sono costretto (e come me immagino altri) a puntare su
conoscienze che utilizzo in futuro.
In questo momento mi serve Perl per delle utility mie, nell'ottica del swiss
army chainsaw. Quindi voglio il path più breve alla soluzione dei miei problemi.
Sull'enterprise Perl sono costretto a passare...
Ciao
Luca

 riesce a metterci le mani (e spesso neanche a capire cosa fa il codice).
Si potrebbe obiettare che Perl offre una serie di strumenti altamente 
sofisticati per il controllo della consistenza del codice prodotto da un 
team di lavoro (gerarchia CPAN Perl::Critic) ed un'ampia documentazione 
su quelle che sono le best practices di sviluppo (c'è perfino un libro, 
dedicato precipuamente a questo: 
http://tinyurl.com/38epwgj
 ), osservando 
le quali si ottiene, a mio avviso, codice più leggibile e mantenibile che 
con qualsiasi altro linguaggio di programmazione.
Si potrebbe obiettare che, in ambito enterprise, Perl è più adottato e 
più richiesto di ognuno di quelli che sono stati qualificati come 
linguaggi di scripting preferibili, e che tale richiesta è, a tutt'oggi, 
ancora in crescita:
http://www.indeed.com/jobtrends?q=perl%2C+python%2C+ruby%2C+php&l=
Ma la cosa più interessante, magari solo dal punto di vista sociologico-
comportamentale, è osservare come la sicumera con la quale si emettono 
giudizi su un certo argomento, in ambito informatico, aumenta 
invariabilmente col quadrato dell'ignoranza sull'argomento medesimo (o 
forse anche col cubo).
Con sprezzo per le conseguenze grottesche che ne derivano, come quella di 
criticare Perl per il TIMTOWTDI, e poi suggerire come alternativa 
preferibile il PHP (che tra l'altro non è un linguaggio general-purpose 
quanto Perl), che esaspera tale concetto fino al caos estremo:
http://tnx.nl/php.html#chaos
E, beninteso, anche io spero di non suonare offensivo per nessuno :-)
Saluti.

 mani (e spesso neanche a capire cosa fa il codice).
Vero, ma la vedo come un fatto positivo.
Per progetti complessi comunque basta progettare in object oriented ed i 
concetti sono praticamente gli stessi in qualunque linguaggio (eredità, 
poliformismo, ecc..)


Nessuna offesa. E' naturale che in un gruppo di Perl ci siano i monaci di Perl.
Io sono come un viandante che, fermatosi al monastero, una volta rifocillatosi,
comincia a predicare le bellezze del buddismo. Naturale che stia un pò sui
coglioni :)
Comunque su una cosa dovrete darmi ragione: se uno non usa Perl con una certa
continuità, ogni volta deve reimpararselo....
Io non amo il PHP. Facevo un discorso su quali tecnologie conviene investire a
fini "lavorativi". Osservavo solo che Java, C# e PHP coprono il 98% della
programmazione web server side (a occhio direi 30-35 Java, 40-50 PHP, 5-15
DotNet). Un motivo ci sarà...
Ciao
Luca


 forse anche col cubo).
Per la sicumera dei giudizi negativi, ci puo` stare. 
Per quella dei giudizi positivi, aggiungerei che questa cresce
proporzionalmente al tempo che si e` trascorso studiando 
l'argomento (che e` umano e comprensibile, secondo me).
:)
s.
-- 
Stefano Rodighiero      |  
http://www.stefanorodighiero.net
mailto:
lar...@perl.it
   |  Italian Perl Mongers: 
http://www.perl.it

 Perl.
Senza volonta` di polemica, in base a quali criteri ritieni un
linguaggio adatto o meno all'ambiente enterprise ?
Nell'azienda in cui lavoro attualmente Perl e` usato con successo anche
per applicazioni mission critical: cose dalle quali passano
letteralmente milioni di euro ogni mese.
Se nella categoria "enterprise" annoveri anche il PHP, allora o
la tua affermazione e` ingenerosa rispetto al Perl, oppure stai 
usando criteri che non ho capito. Ripeto, non e` per polemica: 
mi interessa sinceramente sapere come valuti.
+++
Per il TIMTOWTDI, come ti hanno gia` detto ci sono modi per evitare che
un progetto cui contribuisce unq squadra di programmatori ti scoppi in
mano: e a parte gli strumenti specifici della tecnologia Perl (tipo
Perl::Critic), si tratta delle stesse tecniche che si userebbero in
ambiti in cui usa un altro linguaggio: coding guidelines, code review, e
cose di questo genere.
ciao,


 guardare a Java o, al limite, C#/.Net se si è in ambiente microsoft.
Non ho l'intenzione di sollevare flames, ma su questo devo smentirti.
L'azienda per cui lavoro ha creato un framework OO multipiattaforma 
completamente fatto in perl per ambienti industriali 24/365 che sta 
evolvento da 13 anni. Non posso fare nomi, ma sono aziende conosciute a 
livello nazionale ed internazionale.
Con altri linguaggi non avremmo potuto farlo.
-- 
LI

[risposta comulativa ai 3 messaggi di oggi. Ovviamente, sempre senza polemica.
Offro il mio punto di vista, da non esperto Perl, però come rappresentante della
percezione di Perl che si ha esternamente. Certo, se uno utilizza mesi o anni ha
imparare Perl, e ovvio che si innamora e lo difende a spada tratta. Però occorre
anche essere realisti]

Dato un linguaggio si può sempre derivare un progetto per cui quel linguaggio è
perfetto. Su questo siamo d'accordo. Però da questo non si può derivare che quel
linguaggio è il migliore per tutti i progetti e neanche che sia il migliore per
una grossa fetta di progetti.
Perl è potente, ma è anche promotore di individualismo. Ogni programmatore Perl
si è innamorato di aspetti del linguaggio che altri, spesso, non usano e
faticherebbero a comprendere. In teoria, un ottimo project management potrebbe
infondere dall'altro la disciplina. Nella pratica, spesso questo non succede e,
di conseguenza, se ne avvantaggiano i linguaggi che tutta questa libertà non la
lasciano, che hanno la disciplina "cablata" nel linguaggio stesso e che per
questo sono preferibili anche nei casi in cui i programmatori siano meno produttivi.
C'è inoltre un altro aspetto. La gestione della memoria in Perl. Chi se ne fotte
della gestione della memoria in Perl? il compilatore alloca e disalloca in piena
libertà la memoria che gli serve. In ambiente web, dove arrivano un numero
arbitrario di utenti, questo è un aspetto critico. L'allocazione di memoria è
proporzionale al numero di utenti.  In Java, la JVM fa resource pooling e il
controllo degli oggetti è più esplicito. Inoltre, esistono tool industriali per
controllare aspetti quali l'utilizzo della memoria. In Perl, tali strumenti o
non ci sono o non sono comunque altrettanto noti e patrimonio comune come per
Java. Inoltre, se un modulo CPAN tanto utile si scopre essere un memory hog,
cosa fai? riscrivi un modulo complicatissimo da zero?
Le librerie Java hanno invece la tendenza a essere più well-behaved.
PHP è più perloso in teoria. Ma cose come memcache, apc e zend (per non parlare
di HPHP di FaceBook) hanno insegnato al mondo come creare applicazioni scalabili
anche in PHP. Credo che anche l'integrazione con MySQL e altri RDBMS sia
superiore rispetto a Perl (o sbaglio?).
Ha qualcosa di analogo a tutto questo il Perl? non mi risulta...
Esiste Perl on Rails? (vedo tracce con google ma la risposta mi sembra no)
Luca
PS: si lo so che ora mi arriverà una caterva di controesempi e moduli vari di
CPAN, ma rimane il fatto che Perl non ha la portata di Java e PHP negli ambienti
enterprise...

 enterprise...
Ciao Luca,
premesso che è la prima volta che scrivo in lista, nonostante siano
diversi mesi che sono iscritto e lurko :-> (e anzi colgo l'occasione per
salutare e ringraziare tutti), volevo solo apportare il mio contributo
alla discussione quotando l'ultima parte del tuo messaggio per dire che
quello è il tuo personalissimo, rispettabilissimo, punto di vista. Io
lavoro nel reparto IT del più grosso gestore di telefonia mobile in
Italia e utilizziamo massivamente perl con ottimi risultati, e il mio
punto di vista è l'opposto. Ciò non vuole dire che, come dici tu:
"Dato un linguaggio si può sempre derivare un progetto per cui quel
linguaggio è perfetto. Su questo siamo d'accordo. Però da questo non si
può derivare che quel linguaggio è il migliore per tutti i progetti e
neanche che sia il migliore per una grossa fetta di progetti."
ma non vuol dire neanche che sia il peggiore! :) Sapresti altrimenti
stilare una scala di valutazione assoluta che sia condivisa da tutti?
In definitiva credo che sia questione di scelte, abitudini e propria
ergonomia. E' per questo che chi si trova bene con perl, usa perl, chi
con PHP usa PHP e chi con Java usa Java (e scusate la marea di banalità
che ho scritto).
Ciao e a presto!
Francesco

 Esiste Perl on Rails? (vedo tracce con google ma la risposta mi sembra no)
Che ne dici di Catalyst ?
Esiste anche Sinatra per Perl, si chiama Dancer.
Ulteriore alternativa e` Mojolicious, che pero` non ho mai usato.
s.
[1] 
http://en.wikipedia.org/wiki/Memcached#History
[2]
http://en.wikipedia.org/wiki/LiveJournal#Other_sites_running_the_LiveJou
rnal_engine


 che ho scritto).
Di certo ognuno ha le sue preferenza. Quello che dico io però voleva avere un
raggio più ampio. Al di là delle preferenze personali, uno deve anche scegliere
su cosa vuole investire per costruirsi le sue conoscenze. Fare HelloWorld è
facile, ma andare oltre significa investimento serio. Comprensione delle regole
di scoping, memory model, strumenti....il mio punto di vista è che, in mancanza
di altri dati, per un neolaureato è forse meglio investire più su Java se vuole
trovare lavoro in tempi decenti. Certo, se poi sa che va a fare il sistemista, è
un altro discorso.
Luca

 
Non si finisce mai di imparare. Comunque più o meno la mia idea rimane uguale.
Perl è un linguaggio potentissimo. A torto o a ragione, è meno amato di altri in
ambiente enterprise.
Grazie a tutti della franca discussione comunque
Luca

 PHP negli ambienti enterprise...
Se ne deduce che Amazon, Yahoo!, BBC, CERN, NASA, giusto per citarne 
alcuni, non sono ambienti enterprise.
Il problema dei tuoi post, come ormai detto più volte, è il salto logico 
che intercorre tra le tue sensazioni epidermiche, puntualmente non 
supportate da alcun elemento di fatto (memcached anyone?), e le 
conclusioni di carattere ultimativo che pretendi di trarne.
Comunque anche se così disinformati, i punti di vista /esterni/ possono 
rivestire ugualmente un qualche interesse, almeno sul piano della 
comunicazione e delle dinamiche del marketing buzz.
(*)
La porzione di codice Perl presente nella distribuzione memcached 
riguarda principalmente la test suite.
Tuttavia Perl rimane il linguaggio più utilizzato in memcached, dopo il C.

 40-50 PHP, 5-15 DotNet). Un motivo ci sarà...
Il 98% hai detto? Vediamo se è vero:
http://tinyurl.com/348mcbp
da cui capisci bene che hai sparato cifre di pura fantasia, peraltro 
facendo torto non soltanto a Perl (il quale se la batte con php perfino 
se ci limitiamo al solo ambito web), ma anche a Python e Ruby.
Ora non intendo certo sostenere che Indeed sia la Bibbia (o la Torah o le 
Sutre o il Corano, per rimanere in tema di religioni), ma almeno si esce 
da una metrica basata esclusivamente sul buzz dei blogghettari 
fancazzisti.

 :)
Anche la sicumera nei giudizi positivi è spesso alimentata principalmente
(talvolta unicamente) dagli effetti virali del marketing buzz, anziché da
una compiuta conoscenza dell'argomento. Molti degli utenti di php (forse
la maggioranza) ne costituiscono una delle conferme più evidenti :-)
E la sicumera dovuta al tempo che si è trascorso studiando l'argomento,
forse sarebbe meglio qualificarla come /consapevolezza/, almeno in qualche
caso ;-)
Ciao!

Prima dici:
"se devi fare un tool che si interfaccia via web ai clienti
business/consumer?"
e poi dici:
"Quello che dico io però voleva avere un raggio più ampio."
A me sembra che per aver ragione passi dal particolare al generale e
viceversa. ---> Questo si chiama trolling <-----
Scusa se non capisco, ma credo che ci sia un problema alla base di
tutto: non ritieni che perl sia in grado di fare ciò di cui hai bisogno?
Allora cerca un altro linguaggio e buona fortuna! Se sei ben piazzato
sulle tue posizioni, buon per te, seguile!
Hai detto che questo è il tuo punto di vista? Ottimo, è diverso dal mio
(e a quanto pare dalla maggioranza di quelli che scrivono in questa lista).
Per il resto non hai risposto alla mia domanda: sei in grado di stilare
una graduatoria dei linguaggi di programmazione disponibili basandoti su
dati reali che sia condivisa da tutti gli sviluppatori sul pianeta?
Se sì, producila, se no, torna a Java.
Saluti
Francesco


 veloce :-)
Su questo devo correggermi: non è nello stesso benchmark che Perl va 100 
volte più veloce ed occupa 40 volte meno memoria: si tratta invece di due 
benchmark diversi.
Nel benchmark dove Perl va 100 volte più veloce, occupa invece /soltanto/ 
la metà della memoria richiesta da php :-)

 le Sutre
I Sutra ;-)

 Questo si chiama trolling <-----
vabbè, significa che ho portato la discussione più in là di quanto fosse giusto
fare da parte mia.
Scusate, grazie delle informazioni e saluti a tutti
Luca

 fancazzisti.
a mio parere indeed ha uno "skew" di qualche tipo. Forse perchè i programmatori
PHP sono molto più facili da trovare e non serve cercarli tanto?. Un fottio di
siti sono fatti in PHP. Certamente più di quelli in Ruby, Perl e Python. Molti
di più
Luca

 se ci limitiamo al solo ambito web), ma anche a Python e Ruby.
e di questo che mi dici?
http://langpop.com/
(che comunque non si limita al web)
Luca

 Ruby, Perl e Python. Molti di più
Indubbiamente sono di più, ma bisogna anche vederne le dimensioni e il 
business che muovono, e di conseguenza il personale che impiegano.
I valori forniti da Indeed sono attendibili; la tua percezione è 
probabilmente alterata dalla situazione italiana, che in effetti è molto 
diversa (a mio modo di vedere in peggio), e Indeed stessa ce lo conferma 
(ad ulteriore riprova della sua attendibilità):
http://it.indeed.com/offerte-lavoro?q=perl&l=
http://it.indeed.com/offerte-lavoro?q=php&l=
Pur rimanendo in Europa, prendi il Regno Unito ad esempio, e già le cose 
cambiano di molto:
http://www.indeed.co.uk/jobs?q=perl&l=
http://www.indeed.co.uk/jobs?q=php&l=
e negli USA si ribaltano completamente:
http://www.indeed.com/jobs?q=perl&l=
http://www.indeed.com/jobs?q=php&l=
E mi sembra pleonastico precisare quale tra queste realtà sia quella più 
evoluta dal punto di vista informatico :-)

 (che comunque non si limita al web)
Lo conosco bene, ed è fatto meglio di tanti altri.
Tuttavia questi rilevamenti di tipo /generico/ finiscono sempre col 
sottostimare Perl, molto più di altri linguaggi.
Non è una scusa, il fatto è che soltanto Perl gode di un /ecosistema/ 
così ricco e strutturato (CPAN, siti di discussione specifici come 
Perlmonks, mailing list di mongers, 
irc.perl.org
 ecc.)
Prendiamo per l'appunto le discussioni su IRC rilevate da LangPop: prende 
in considerazione soltanto la rete Freenode, mentre Perl ha il suo server 
IRC specifico:
http://www.irc.perl.org/
che ovviamente non viene monitorato.
Lo stesso dicasi per CPAN ecc.
E nonostante questo Perl non se la passa poi così male neanche su 
LangPop :-)
(Specialmente se non si tiene conto della Normalized Comparison che è 
fatta veramente a cazzo di cane).
In conclusione non intendo certo sostenere che Perl sia il linguaggio più 
diffuso, e neanche che rientri tra i primi... quattro diciamo :-)
e neanche che negli ultimi anni non abbia perso quote di mercato (pur 
continuando a crescere in termini assoluti).
Ma solo evidenziare come le tue valutazioni iperminimalistiche fossero 
del tutto infondate.
Ciao.
P.S.
Scoperta dell'ultima ora: ho trovato uno studio che effettua l'analisi 
delle dipendenze di tutti i package di debian (quindi, includendo le sue 
derivate quali *Ubuntu, parliamo della distribuzione linux di gran lunga 
più diffusa):
http://tinyurl.com/3yyekom
nella quale si scopre che il linguaggio da cui dipendono il maggior 
numero di package, è proprio Perl:
http://tinyurl.com/2uc8dyj
(OK, considerando i source package sarebbe il C, ma Perl viene per 
secondo :-)

 anche essere realisti]
Io volevo solo dire che non è vero che il perl non venga usato in 
ambienti "enterprise" in quanto da 13 anni lo usiamo con successo e come 
noi tanti altri.
-- 
LI


Sicuramente il tipo di utilizzo "enterprise" che ne fate voi, non è
abbastanza "enterprise" o "web oriented" per altri ;-)
(sdrammatizzo la vuota polemica delle mail precedenti).
Saluti
Francesco