con ubuntu 12.04 in perl Zenity non ritorna un valore

Asked by attilio olivieri

Ubuntu 12.04 64bit italiano.
In uno script perl tipo-->

#!/usr/bin/perl
use strict;
use warnings;

my $Ret = `zenity --question --text="vediamo"`;
print STDOUT "Ret= $Ret\n";

Il valore di ritorno $Ret è vuoto.

Question information

Language:
Italian Edit question
Status:
Answered
For:
Ubuntu perl Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
marcobra (Marco Braida) (marcobra) said :
#1

Ti informo comunque che anche in Ubuntu 10.04 non viene ritornato nessun valore con lo script sopra riportato...
Non sembra una question di release...

Revision history for this message
attilio olivieri (attio1) said :
#2

Ciao marcocobra e grazie per la risposta.
Devi sapere che prima di fare la domanda avevo cercato in internet e lì ho trovato solo un messaggio che diceva che il valore di ritorno andava da qualche altra parte. Per questo motivo ho provato la versione 12.10 di ubuntu, e con mia grande sorpresa, ho visto che il problema rimaneva. Oltre a questo la versione del perl era la stessa del mio (5.14, in ubuntu 12.04 come in 12.10). Quindi il problema era conosciuto e nessuno faceva niente. Per questo motivo ho fatto la mia domanda, ma non avendo una risposta immediata (qualche giorno), ho cercato di trovare una soluzione al problema. Ho fatto uno script bash che pilotava il programma zenity, e con questo non si avevano problemi sul valore di ritorno. Poi ho cercato di pilotare lo script bash dallo script perl, e con questo non avevo valori di ritorno dello script bash (come prima). Capendo che il problema non era di ubuntu ma del perl che ci lavorava e nessuno faceva qualcosa per sistemarlo (doveva essere configurato meglio in ubuntu), ho cominciato a pensare che ci doveva essere un altro sistema per pilotare lo script bash. Cercando tra i comandi del perl ho trovato l'istruzione system. Lanciando dal perl lo script bash con questa istruzione, ho visto che si avevano valori di ritorno. A questo punto mi è venuta l'idea di lanciare con la stessa istruzione il programma zenity direttamente dal perl, ed ho visto che si avevano valori di ritorno. Per questo motivo il mio script perl cambia in:

#!/usr/bin/perl

use strict;
use warnings;

my $YES = 0;
my $NO = 256;

#my $Ret = `zenity --question --text= "vediamo"`;
my $Ret = system("zenity --question --text= vediamo");
print STDOUT "Ret= $Ret\n";
if ($Ret == $YES){
 print STDOUT "Ret= SI\n";
}else{
 print STDOUT "Ret= NO\n";
}

Ciao e grazie della risposta.

Revision history for this message
marcobra (Marco Braida) (marcobra) said :
#3

Ti confermo che così lavora anche in Ubuntu 10.04.4 LTS (che aggiornerò a breve direttamente a 12.04 LTS)

Non sono esperto di Perl, ma questo, potrebbe essere il modo corretto per avere un ritorno completo delle variabili, quindi anche da quelle che Zenity restituisce.

Se pensi che questo non sia corretto non indugiare ad inviare una segnalazione di bug riguardante Perl

ubuntu-bug perl

Ciao

Revision history for this message
attilio olivieri (attio1) said :
#4

Ciao, marcobra
Il sistema fatto mi risolve il mio problema, ma non è corretto rispetto agli utenti di ubuntu, perchè in internet non si trova. Comunque il codice esatto è:
my $Ret = system("zenity --question --text=vediamo");
altrimenti non si visualizza il messaggio "vediamo" (un blank in meno).
Per quanto riguarda il riportare un errore "perl", dovrei verificare che lo stesso comportamento ci sia in altre distro di linux. Se il problema non ci fosse il bug è di ubuntu, altrimenti è di perl.
Ciao e grazie.

Can you help with this problem?

Provide an answer of your own, or ask attilio olivieri for more information if necessary.

To post a message you must log in.