Newsgroup: it.comp.lang.perl
Titolo: Variabile vuota....???

Scusate, sono un pessimo principiante: ho cercato su deja tutti i vecchi
post ma nessuna delle soluzioni proposte mi funziona.
Devo verificare il valore di una variabile settato manualmente o con
<STDIN>. Se la var è uguale a null stampare un messaggio, se diversa
stamparne un altro.
Semplicissimo no? Non per me!
Ecco i miei tentativi con le due possibilità -variabile settata manualmente
a null o da settare via input tastiera sempre a null (premo invio
senz'altro):
1)
$abc = "";
        oppure
$abc = <STDIN>;
if ($abc eq "")
        {print "abc è nulla";}
else
        {print "abc è valorizzata";}
----------------------------------
2) -che mi convince poco-
$abc = "";
        oppure
$abc = <STDIN>;
if (defined($abc))
        {print "abc è nulla";}
else
        {print "abc è valorizzata";}
Non funziona nessuno dei due.... sigh!
Ah dimenticavo la variabile può essere valorizzata da numeri o stringhe.....

 {print "abc č valorizzata";}
E comunque cosa vuol dire "null" per te?
Il per ha un concetto di null molto ambiguo ;-)
-- 
Saluti,
Giancarlo

| Prova a sostituire con
|
| chomp($abc = <STDIN>);
|
Innanzitutto grazie x la risposta...... A me non va nemmeno aggiungendo
chomp();..... A cosa serve chomp?
| > if ($abc eq "")
| > {print "abc è nulla";}
| > else
| > {print "abc è valorizzata";}
|
| E comunque cosa vuol dire "null" per te?
Null per me è una variabile che non contiene nè un numero ne' una
stringa.....Sbaglio?
| Il per ha un concetto di null molto ambiguo ;-)
Il perl è un casino!
| --
| Saluti,
| Giancarlo

 Il perl è un casino!
No, basta sapere e capire le cose.
-- 
Saluti,
Giancarlo

----------------
------------------
Prova un po' cosi', copia ed incolla:
#!/usr/bin/perl -w
print "Inserisci qualcosa o invia ";
my $input=<STDIN>; chomp $input;
if ($input eq "") {print "Non hai inseito nulla \n";}
else {print "ok, hai inserito $ input \n";}
exit;
Garantito che funziona, se da te non va, la causa è da ricercare altrove.
Ciao

----------------
------------------
Prova un po' cosi', copia ed incolla:
#!/usr/bin/perl -w
print "Inserisci qualcosa o invia ";
my $input=<STDIN>; chomp $input;
if ($input eq "") {print "Non hai inserito nulla \n";}
else {print "ok, hai inserito $input \n";}


 altrove. Ciao
Comunque, per farlo nel modo piu' bello (ovvero come piace a me):
#! /usr/bin/perl -w
chomp($_=<STDIN>);
print 'abc è '. (/^$/?'nulla':'valorizzata') ."\n";
Garantito che funziona, se da te non va, la causa è da ricercare altrove
;-)
-- 
Saluti,
Giancarlo

 
chomp($input);
if ($input) {
#c'è qualcosa in questa variabile
} else {
#non c'è qualcosa in questa variabile
}
oppure invertito:
if (!$input) {
#non c'è qualcosa in questa variabile
} else {
#c'è qualcosa in questa variabile
}

| | Prova a sostituire con
| |
| | chomp($abc = <STDIN>);
Ok ho risolto sostituendo warn a print e mettendo il "tuo" chomp....... ;-)
Ma cos'è questo maledetto chomp????? Ora mi guardo qualche doc....
Bye

 if ($input) {
Cosi' di nuovo spostiamo la questioe su "cos'e' null"... facendo in 
questo modo se in $input c'e' il valore "0" viene eseguito il blocco 
"#non c'è qualcosa in questa variabile".
-- 
Saluti,
Giancarlo

}
Non e` garantito che funzioni (e.g. $input = undef).
Anzi: se $input non lo dichiari in partenza, stai pur sicuro che non
funzionera`.
A questo punto, devi prima eseguire un test sul fatto che $input sia
definito e poi su quello che contiene.
Bye,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://www.radiance.d2g.com/~zefram
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 definito e poi su quello che contiene.
ma se non e' definita, non c'e' nulla dentro ovvero in quasto caso non 
definita e' uno dei casi in cui, secondo le rischieste inizali, la 
variabile' nulla.
-- 
Saluti,
Giancarlo

 variabile' nulla.
Se e` undef, puo` esistere, ma il test fallisce.
A questo punto, o si definisce cosa e` `nulla' (0, /^$/, `pippo') oppure
non si puo` fare un test `catch-all'.


 
Questo e' esattamente quello che dicevevo io, quinado gli ho chiesto 
cosa intendeva con "nulla".
-- 
Saluti,
Giancarlo

 wrote in message
a3dkab$kto$1...@serv1.iunet.it...

toglie il "\n" alla fine della stringa.
---
Mario Rizzuti

 
Per la precisione, chomp() rimuove al parte finale della stringa che
coincide con il valore della variabile $/, che per default vale "\n" in
ambienti Unix e "\r\n" in ambienti Windows, e può essere valorizzata a
piacere dall'utente.
Max