Newsgroup: it.comp.lang.perl
Titolo: Passare un array ed una variabile ad una funzione

Ciao,
e' sbagliato scrivere in questo modo:
my (@a, $a) = @_;
per passare un array ed una variabile ?
$a non viene valorizzata, si puo' risolvere senza invertire l' ordine e
senza passare il reference all' array ?
Andrea

senza passare il reference all' array ?
Sě:
  my $a = pop;
  my @a = @_;
o anche:
  my @a = @_;
  my $a = pop @a;
Usare il reference, perň, mi sembra un po' piů logico.
Ciao.

 my($a,@b) = @_;
Non capisco la questione di attaccare il my alla parentesi. Non è
assolutamente necessario, e mi pare anche abbastanza brutto.
Ricordo che scalari e array hanno spazi nome distinti, sicché è senz'altro
una buona idea usare nomi diversi per le due variabili, per ridurre la
possibilità di confusione umana, ma non è un errore usare lo stesso nome.
Ciao.

 verificare li`... anzi a dirla tutta non ho alcun Win sottomano :)
Non mi e` chiaro quel che dici.
Potresti postare un piccolo esempio, annotando il comportamento
che ti aspettavi e quello che invece hai ottenuto?
ciao,
S.

verificare li`... anzi a dirla tutta non ho alcun Win sottomano :)
Avessi chiamato in causa un altro universo, mi sarebbe riuscito forse piů
credibile, ma il sistema operativo non č proprio sufficiente.
SE accadesse questo per qualche implementazione di perl (e ci crederň
quando lo vedrň), si tratterebbe di un baco. Certamente non accade sul mio
sistema. Del resto, non ci sarebbe alcuna giustificazione sintattica, per
non parlare dell'assenza assoluta di un benché minimo riscontro nella
documentazione.
Se ti piace pensare a my come ad una funzione, scrivilo pure senza spazi,
ma non cambia assolutamente nulla (del resto, non cambia molto neanche nel
caso di una funzione).
Ciao.

, scriveva:
Giovanni> >si`, ma funziona al contrario (ed attaccando "my" alla
Giovanni> parentesi):
Giovanni> >
Giovanni> > my($a,@b) = @_;
Giovanni> Non capisco la questione di attaccare il my alla
Giovanni> parentesi. Non è assolutamente necessario, e mi pare anche
Giovanni> abbastanza brutto.
Mi sembri anche una persona ragionevole.. ma che dico una... due o
piu` ;), visto che sembra essere una identita` di pubblico dominio.
Ma credo di capire il perche`... anzi posso aggiungermi anch'io? ;-)
Ti e` pero` sfuggito che e` piu` importante il fatto che $a
e` una variabile riservata come anche $b e non dovrebbero essere usate.
Diventa pericoloso usare un {blocco} sort, che tenterebbe di definire
implicitamente $a e $b globali al package.
$ man perlfunc:
]     Note that in the latter case, it is usually counter-productive
]     to declare $a and $b as lexicals.
a me non stona invece la mancanza di spazio perche` posso accettarlo
considerando -secondo l'abitudine e conoscenza di chi ha scritto
quella sintesi-  my una funzione che alloca le variabili private
e produce un leftvalue, in un caso come questo di tipo @wantarray.
Giovanni> Ricordo che scalari e array hanno spazi nome distinti,
Giovanni> sicché è senz'altro una buona idea usare nomi diversi per le
Giovanni> due variabili, per ridurre la possibilità di confusione
Giovanni> umana, ma non è un errore usare lo stesso nome.
dipende dall'abitudine, v. l'esempio di @ip e $ip del mio precedente post...
Saluti,
MARco
-- 
x(t),y(t) = th(3t-34.5)*e^[-(3t-34.5)^2]/2-4.3+e^(-1.8/t^2)/(.8*atg(t-
3)+2)(t-1.8)-.3th(5t-42.5),(1.4e^[-(3t-34.5)^2]+1-sgn[|t-8.5|-.5]*1.5*
|sin(pi*t)|^[2e^(-(t-11.5)^2)+.5+e^(-(.6t-3.3)^2)])/(.5+t)+1  ; 0<t<14

e produce un leftvalue, in un caso come questo di tipo @wantarray.
E` senz'altro un modo legittimo di vedere le cose, anche se ho letto nella
bug list di perl di qualche oscuro caso in cui può condurre ad
interpretazioni sintattiche che si discostano da quelle effettivamente date
da perl. Come sopra, comunque, basta tenersi ragionevolmente alla larga
dall'oscurità per navigare comunque sicuri.
Come qualunque altra funzione, in ogni caso, my accetta spazi fra nome e
parentesi.
Ciao.