Newsgroup: it.comp.lang.perl
Titolo: Due domandine ....

Ciao,
vorrei fare due domandine, con la premessa che e' da due giorni che sto 
imparando perl, per cui ... scusatemi ... se saro' banale.
1) ho fatto uno script per calcolare il tempo medio per percorrere un 
km.   Arrivo al termine delle varie operazioni dove il risultato e', per  
esempio, 3,50 ( 3 minuti e 50 secondi ). Trasformo il 50 che e' in 
centesimi e lo porto in sessantesimi , con un riferimento , per esempio :
$a ( dove ho impostato l'operazione) . 
Fin qui e' tutto ok.
Il mio problemino e' che, alla fine dello script, vorrei dare 
un'istruzione "print" che riporta:
"Il tempo medio per percorrere un km. e' 3 minuti e 30 secondi."
Mentre so come fare per riportare i 30 secondi ( con il riferimento $a 
), non riesco a capire come fare per prendere il valore 3 minuti ; da 
tenere presente che il numero che si riferisce ai minuti ovviamente 
cambia , essendo riferito a tempo impiegato e distanza.
Spero di essere stato chiaro ...
2) un piccolo chiarimento. Ho cercato su google ma, sinceramente non ho 
capito molto ...
Perche' se all'inizio dello script aggiungo il -w , quando e' tutto a 
posto, non mi da la segnalazione di errori , mentre se aggiungo 
use strict
mi segnala degli errori ?
Grazie , e scusatemi ancora se chiedo cose banali ...

 Grazie , e scusatemi ancora se chiedo cose banali ...
oltre a google usa perldoc, sia online che in locale.
perldoc strict
gia' da la risposta.
comunque:
quando usi una variabile per la prima volta, la crei come variabile di
tipo "Package", cioe' il suo simbolo viene inserito nel package corrente.
se non definito, e' main::
es:
$nome "roberto";
equivale a
$main::nome = "roberto";
la variabile package ha uno scope globale. se vuoi una variabile visibile
solo all' interno del blocco dove definita (locale) devi usare:
my $nome = "roberto";
Senza farla lunghissima, ti rimando all' articolo da cercare su
www.perl.it
 comunque use strict; ti costringe ad esplicitare il
nome del package o a dichiarare i simboli con my.
use strict;
$package::nome = "roberto";
my $temp = $package::nome;
# funziona
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 mi segnala degli errori ?
"-w" è collegato con "use warnings", non con "use strict".
Banalizzando, "-w"/"use warnings" dice a perl di avvertirti se trova
qualcosa che gli suona poco (emettendo "w"arnings, avvertimenti),
mentre "use strict" dice a perl di essere estremamente puntiglioso e
di rifiutare di proseguire se vengono utilizzate determinate pratiche
di programmazione ritenute potenzialmente pericolose (per vari
motivi).
Per fare un esempio, il seguente script farà sì che strict si lamenti:
use warnings;
use strict;
$ciao = 'kaboom!';
perché stai utilizzando una variabile senza averla dichiarata prima e/
o senza contestualizzarne il pacchetto dove dovrebbe essere contenuta,
mentre il seguente script farà sì che warnings dica la sua:
use warnings;
use strict;
@ARGV[0] = 10;
Qui, infatti, non si propone il problema di prima (perl sa benissimo a
quale variabile speciale ti riferisci con ARGV), però stai utilizzando
una notazione lista per l'assegnazione di uno scalare, e questo è
potenzialmente una svista che potresti voler correggere.
Per la verità sulle questioni, "perldoc strict" e "perldoc warnings"!
Ciao,
   Flavio.


s.
-- 
Stefano Rodighiero      |  
http://www.stefanorodighiero.net
mailto:
lar...@perl.it
   |  Italian Perl Mongers: 
http://www.perl.it

 s.
Si Stefano, proprio questo.
Ricordavo di averlo letto con molto profitto.
Grazie.
