Newsgroup: it.comp.lang.perl
Titolo: $variabile = shift

Salve,
ho sbirciato nelle F.A.Q. ma non riesco a
capire cosa vuol dire porre una variabile
uguale a shift. Ogni tanto mi trovo questa
cosa nei moduli che analizzo.
Grazie mille per le risposte.
Davide.

 cosa nei moduli che analizzo.
Prima delle FAQ bisognerebbe leggersi il manuale.
 perldoc -f shift
 
http://www.perldoc.com/perl5.8.0/pod/func/shift.html
 
Max


Grazie ma avevo giŕ visto che nel manuale trattava lo shift
degli array. Quě si parla di una variabile non di un array.
Grazie.
Davide.

 Grazie.
Ti consiglio di leggere perlintro.
Le informazioni che cerchi, in particolare, stanno nella
sezione "Scrivere subroutine". Cito:
  --------------------------------------------------------
  Scrivere subroutine
  Scrivere subroutine e' facile:
 
    sub log {
        my $logmessage = shift;
        print LOGFILE $logmessage;
    }
  Cos'e' quello shift? Gli argomenti per una subroutine sono 
  disponibili in uno speciale array chiamato @_ (consultate
  perlvar per altre informazioni in proposito). L'argomento di 
  default della funzione shift e' @_. 
  Quindi my $logmessage = shift; sposta il primo elemento 
  fuori dalla lista e lo assegna a $logmessage.
  --------------------------------------------------------
Trovi una traduzione italiana di perlintro qui:
 
http://pod2it.sourceforge.net/pods/perlintro.html
Attenzione, si tratta di un documento non revisionato e
che probabilmente contiene qualche errore ortografico o
grammaticale. Me ne scuso; tuttavia, dovrebbe essere 
usabile, e spero utile :)
ciao,
S.

 wrote in message
Davide> c0rnle$ade$1...@newsreader.mailgate.org...
      > > Prima delle FAQ bisognerebbe leggersi il manuale.
      > >
      > > perldoc -f shift
      > >
      > > 
http://www.perldoc.com/perl5.8.0/pod/func/shift.html
      > >
      > > Max
Davide> Grazie ma avevo già visto che nel manuale trattava lo shift
Davide> degli array.
...
Davide, non puoi fermarti alla seconda riga di
 perldoc -f shift
vai avanti a leggere la terza e quarta,
dove e` scritto "If ARRAY is omitted, shifts the @_ array"...
e` anche prevedibile che il manuale dira` qualcosa di shift senza
parametri perche` inizia chiarendo i modi possibili di chiamare la funzione:
    shift ARRAY
    shift
poi dice cosa fa, non e` evidente?
Per apprendere un linguaggio quindi conoscerne sintassi e semantica
ci sono tre approcci:
1- lettura lineare della documentazione prima di ogni altra azione
2- lettura in approfondimento back tracking della documentazione
  approfondendo ogni cosa nuova/sconosciuta/che si va ad usare.
3- visione di altri sorgenti e deduzione di sintassi e semantica
Se non volete produrre del codice immondo (da immondizia perche`
sbagliato o carente di logica) cioe` se volete essere capaci di produrlo,
con il perl in particolare non va proprio bene la tecnica 3,
soprattutto lo dico ai piu` esperti che tendono a preferire
questa scorciatoia [tipicamente leggero appoggio anche alla 2]).
Io usavo awk, poi gawk e li avevo imparati cosi` totalmente che li
ho ritenuti troppo limitati in piu` aspetti (si imparano nomi di
variabili, parametri di compilazione, variabili d'ambiente,
default, funzioni, sintassi rigida), d'altra parte, tanti anni fa,
erano una manna per elaborare velocemente dei flussi testuali
imperfetti (intendo creati dall'uomo).
conobbi con entusiasmo il perl e decisi di usarlo perche` non
ava limiti, sapevo in prima persona cosa intendevo per limiti.
Ora garantisco a chi comincia, che dall'interpretazione dinamica del
codice, alla veloce gestione delle strutture dati basi ed estendibilita`
per oggetti con una sintassi simbolica, il perl non riserva sorprese di
di limitazioni, anche in velocita` l'interprete perl e` cosi` eccellente
da poter battere grep (un _compilato_ scritto in c al solo scopo di
cercare regular expression in un file).
Cioe` se volete imparare il perl, imparatelo.
Permette addirittura di trascrivere il pensiero cosi` come e`:
sintetico, chiaro, strutturato.
Davide> Quì si parla di una variabile non di un array.
"si parla"... dubito che piu` di uno riesca a parlare di una cosa
cosi` sbagliata.
Forse non hai chiaro che
   $variabile = shift;
si scompone in due tempi
1- calcola il valore di shift (senza parametri, quindi e` sottointeso
   il parametro variabile array @_, descritta in man perlvar e perlsub)
2- assegna il risultato di shift a $variabile.
Cose da non credere,
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

 wrote in message
Davide> c0rnle$ade$1...@newsreader.mailgate.org...
      > > Prima delle FAQ bisognerebbe leggersi il manuale.
      > >
      > > perldoc -f shift
      > >
      > > 
http://www.perldoc.com/perl5.8.0/pod/func/shift.html
      > >
      > > Max
Davide> Grazie ma avevo già visto che nel manuale trattava lo shift
Davide> degli array.
...










Saluti,
