PDA

Visualizza la versione completa : signals su windows


gianvituzzi
27-09-2008, 11:40
Salve,

ho uno script per che può girare sia su windows che su linux però all'inizio ho questa riga:


# Catch Signals
#

$SIG{"PIPE"} = $SIG{"KILL"} = $SIG{"QUIT"} = $SIG{"ABRT"} = $SIG{"INT"} = sub { print "-> Connection closed\n"; exit; };

se eseguito da terminale su windows mi darà errore o ignorerà questa riga? come posso evitare di eseguire questa riga se sto su windows?

grazie

MARTEDI
28-09-2008, 12:19
Non so se ho capito correttamente, cmq ho inserito la tua riga in un file pl, su windows, ho eseguito il file da e non mi ha dato errori, ha semplicemente eseguito le righe successiva. In ogni caso, la prima cosa che mi verrebbe in mente sarebbe di leggere la PATH:

$ENV{'PATH'}

se contiene la parola windos o no, ... è anche vero che la si può modificare ...

gianvituzzi
28-09-2008, 12:47
beh, buone notizie...cmq ormai avevo risolto così:



my $OS = $^O;

if ($OS =~ /^MSWin/i) {
$OS = 'WINDOWS';
} elsif ($OS =~ /^VMS/i) {
$OS = 'VMS';
} elsif ($OS =~ /^dos/i) {
$OS = 'DOS';
} elsif ($OS =~ /^MacOS/i) {
$OS = 'MACINTOSH';
} elsif ($OS =~ /^os2/i) {
$OS = 'OS2';
} elsif ($OS =~ /^epoc/i) {
$OS = 'EPOC';
} elsif ($OS =~ /^cygwin/i) {
$OS = 'CYGWIN';
} else {
$OS = 'UNIX';
}

if ($OS ne 'WINDOWS')
{
$SIG{"PIPE"} = $SIG{"KILL"} = $SIG{"QUIT"} = $SIG{"ABRT"} =
$SIG{"INT"} = sub { print "-> Connection closed\n"; exit; };
}


grazie lo stesso

Loading