Newsgroup: it.comp.lang.perl
Titolo: Il segno di troncamento (apostrofo).

Metacaratteri in ottale.
$a="Vediamo un po\140";   # mi restituisce l' apice retroverso
$a="Vediamo un po\047";   # mi dovrebbe dare l' apostrofo invece no. Perchè?
Bisognerà rinunciare all'apostrofo?
-- 
Qui si usa Linux.
http://www.puppylinux.org

 Perchè? Bisognerà rinunciare all'apostrofo?
$ perl -e '$a="Vediamo un po\047";print "$a\n";'
Vediamo un po'

Il Mon, 02 Nov 2009 19:18:45 +0000
antani ha scritto:

Eppure se invece di usare il terminale fai uno script:
#!/usr/bin/perl
$a="vediamo un po\140";
open "mn","| Xdialog --title test --msgbox '$a' 0 0";
close "mn";
---------------------------
Funziona con l'apice retroverso, mentre volendo giustamente l'apostrofo:
#!/usr/bin/perl
$a="vediamo un po\047";
open "mn","| Xdialog --title test --msgbox '$a' 0 0";
close "mn";
-----------------------
Non funziona affatto. Lo stesso usando come finestrella grafica gmessage al posto di Xdialog.
-- 
Qui si usa Linux.
http://www.puppylinux.org
#09306934

 Non funziona affatto. Lo stesso usando come finestrella grafica gmessage 
al posto di Xdialog.
Eh beh, non e' quello che hai detto nel primo messaggio, e non e' proprio la 
stessa cosa. Proprio per nulla.
Se usi "| ...." la shell interpreta quello che segue, quindi devi usare gli 
stessi accorgimenti che useresti con la shell, quindi una di queste:
$a="vediamo un po\\\047";
oppure
$a="vediamo un po\047\\\047\047";
a seconda di dove usi la stringa.

Il Tue, 03 Nov 2009 17:48:37 +0000
antani ha scritto:

Questo funziona:
------------------
#!/usr/bin/perl
$a="Vediamo un po\047\\\047\047";
open "mn","| gmessage '$a' ";
close "mn";
------------------
Non ho capito ancora bene perchè, ma deve entrarci la presenza dello zero dopo la barra di escape. (?) Grazie mille. 
Approfitto per chiedere: esiste un modulo perl che permetta di calcolare direttamente le funzioni trigonometriche inverse senza passare per atan2? 


 Approfitto per chiedere: esiste un modulo perl che permetta di calcolare direttamente le funzioni trigonometriche inverse senza passare per atan2? 
Stai dicendo che non vuoi Math::Trig?
Pui provare Math::Pari, oppure Math::BigReal (assieme a Math::GMP, se lo 
vuoi velocizzare), ma ha soltanto atan() e atan2() se ricordo bene.
Ciao.

Il Thu, 5 Nov 2009 02:54:49 +0100
Tantumergo ha scritto:

Eureka! Ho trovato istallato e usato il modulo Math::Trig .
-- 
Qui si usa Linux.
http://www.puppylinux.org
http://digilander.libero.it/puppylinuxitalia/
05/11/2009 ore 09:44:09

 Non ho capito ancora bene perchè, ma deve entrarci la presenza dello zero 
dopo la barra di escape.
No, e' semplicemente perche' il risultato che viene "visto" dalla shell dopo 
che perl ha fatto le sue interpolazioni deve avere un quoting corretto. In 
aggiunta all'ottima spiegazione gia' fornita da Emanuele, aggiungo che non 
c'e' bisogno che tu usi \047, puoi usare ' direttamente:
#!/usr/bin/perl
$a="Vediamo un po'\\''";
open "mn","| gmessage '$a'";
Con questo alla fine la shell vedra'
gmessage 'Vediamo un po'\'''
che e' corretto (no, 'Vediamo un po\'' non funziona, nel caso ti sia venuto 
il dubbio). Ovviamente il modo migliore di farlo e' come ha descritto 
Emanuele, ossia fare in modo che la shell non interpoli.

 
No, ho "scoperto" stamattina Math::Trig ed è proprio quello che cercavo.
http://www.cpan.org/modules/01modules.index.html
Come saprete certamente, c'è una vera marea di moduli aggiuntivi Perl.
Grazie per le spiegazioni. La cosa strana era che /160 funzionava subito mentre
/047 no.
-- 
Qui si usa Linux.
http://www.puppylinux.org
http://digilander.libero.it/puppylinuxitalia/
05/11/2009 ore 13:55:36

 
Ha funzionato in questo modo:
---------------------
#!/usr/bin/perl
$a=(localtime)[8];
$b=$a*60;
$a="Siamo nel periodo dell\' ora solare";
$a="Siamo nel periodo dell\' ora legale" if $b > 0 ;
open "dyls",'|-',qw(Xdialog  --title (localtime)[8]  --msgbox),"La correzione è pari a $b minuti - $a",0,0 or die $!;
close "dyls";
----------------------
Usando: (a)
open "dyls",'|-',qw(Xdialog  --title (localtime)[8]  --msgbox),"La correzione è pari a $b minuti - $a",0,0 or die $!;
close "dyls";
---------------------
Invece di:(b)
open "dia"," | Xdialog --title 'Ora legale '`date +%X` --timeout 25   --msgbox  '  $h:$m:$s $g\n$mi' 00 00";
close "dia";
---------------------
Ho ricavato la (b) da certi appunti presi da internet, mentre la (a) mi era nuova. Ma dove stanno scritte certe differenze? 
-- 
Qui si usa Linux.
http://www.puppylinux.org
http://digilander.libero.it/puppylinuxitalia/
08/11/2009 ore 14:46:56


Utilizzando la forma finora ignota (a) per inviare la variabile a Xdialog  
basta "\'" per ottenere l'apostrofo.
Per usare Xdialog ho sempre usato:
open "xxx"," | Xdialog --title test --msgbox  '$x' 00 00";
close "xxx";
Che in questo caso non funziona. Ma dov'è che stanno scritte queste cose?
E dove i principi in base a cui sono strutturate?
-- 
Qui si usa Linux
http://www.puppylinux.org
http://www.opera.com/browser
 

 era nuova. Ma dove stanno scritte certe differenze?
 perldoc -f open
M