Newsgroup: it.comp.lang.perl
Titolo: ancora db delle scatole :-)

Ebbene si sono ancora con questo database del controllo delle scatole :-)
Avrei un campo testuale con il numero della scatola (non chiedetemi come mai
è di tipo testo...)
e lo vorrei inserire nel db con un numero di zeri iniziali in modo da avere
16 caratteri numerici.
Cioè se ho scatola numero 66777 e numero 99 devo inserire
0000000000066777
0000000000000099
Come faccio per inserire gli zeri iniziali?
Thanks :-)
Per Giovanni e gmax.
Alla fine ho deciso di scrivermi il CGI.
Ho pochissima esperienza al riguardo ma può essere il momento di farsi le
ossa no? :-)

Come faccio per inserire gli zeri iniziali?
Se vuoi farlo direttamente con un'istruzione sql UPDATE o INSERT non ti so
rispondere (può darsi che MySql provveda qualche funzione di aiuto).
In perl, puoi usare la funzione sprintf.
Ciao.

 In perl, puoi usare la funzione sprintf.
Grazie Giovanni ma forse mi sono spiegato male.
Io ho i numeri delle scatole in un db e li voglio *importare* in un altro
con gli zeri iniziali.
Quindi il mio problema non è quello di stampare a video il numero con gli
zeri inziali ma far diventare la variabile
00000000000066777 e poi inserirla nell'altro db...
Spero di essermi spiegato meglio.

 00000000000066777 e poi inserirla nell'altro db...
Appunto, la prendi, la passi a sprintf e la inserisci nell'altro db :-)
-- 
Valerio Granato
http://www.musicoff.com
 - Music Online For Free
La Grande Comunità Online per Musicisti

> Appunto, la prendi, la passi a sprintf e la inserisci nell'altro db :-)
Grazie ragazzi.
Effettivamente funziona.
Mi state risolvendo un sacco di problemini oggi :-)
$prova=printf "%016u",$pratiche_mancanti_o_fuori[4];

> Appunto, la prendi, la passi a sprintf e la inserisci nell'altro db :-)
Ops come non detto.
C'e' ancora qualcosina che non funziona:
se faccio:
$pratiche_mancanti_o_fuori[4]=printf("%016u",$pratiche_mancanti_o_fuori[4]);
allora $pratiche_mancanti_o_fuori[4] diventa "1".
se faccio
$pratiche_mancanti_o_fuori[4]=~printf("%016u",$pratiche_mancanti_o_fuori[4])
;
$pratiche_mancanti_o_fuori[4] rimane il numero che era :-(
Non capisco dove sbaglio :_(

 allora $pratiche_mancanti_o_fuori[4] diventa "1".
printf stampa su STDOUT e restituisce un valore (che forse e` il numero
di segnaposto "unificati", non ricordo). Per farti restituire la 
stringa devi usare sprintf (NB: _s_printf).
ciao,
S.
-- 
Stefano Rodighiero      |  
http://larsen.perlmonk.org
mailto:
lar...@perl.it
   |  
http://www.perl.it

 Non capisco dove sbaglio :_(
Per la serie tentando si impara ho capito il problema.
Ero convinto che printf we sprintf fossero due funzioni identiche e
invece...
E' bastato fare come mi avete detto :-)
Ho cambiato printf in sprintf :-)

$prova=printf "%016u",$pratiche_mancanti_o_fuori[4];
Immagino sia un errore di battitura, comunque è, naturalmente:
   $prova = sprintf "%016u", $pratiche_mancanti_o_fuori[4];
printf stampa a schermo (o, meglio, su STDOUT); sprintf ritorna la stringa
formattata secondo specifiche e argomenti (la differenza è analoga a quella
fra le omonime funzioni C).
Da notare che non è necessario usare la specifica di formato %u; visto che
hai detto che si tratta di un campo testo, puoi tranquillamente fare:
   $prova = sprintf "%016s", $pratiche_mancanti_o_fuori[4];
Ciao.