irah has asked for the wisdom of the Perl Monks concerning the following question:
Dear Monks,
The following code is used to check the status of the network. The logic is, I am executing ping command with two different IP address. If first one failure only, it will goto second one.
#!/usr/bin/perl use strict; use warnings; # register signal. $SIG{'INT'} = 'Handler'; # declaring variable. my ($ip1, $ip2, $to, $exit_value1, $exit_value2, $flag); # this flag is used to avoid the repeat # execution when execute the second ping # with second IP address. $flag=0; # initializing IP address. $ip1 = "192.168.0.0"; # first IP address $ip2 = "google.com"; # second IP address. # execute the ping with first IP address. do { eval { $exit_value1 = `ping $ip1`; } }; exit; # if it is working fine, exit the program. # execute the ping with second IP address. Exec: print "$ip2\n"; $flag=1; # reset the flag to avoid repeat # execute second ping with different IP address. do { eval { $exit_value2 = `ping $ip2`; } }; # it is a signal handle for SIGINT signal. sub Handler { # alert message to user. print "Caught SIGINT: $?\n"; # if the first ping command is failure, goto second, if (($? != 0) and ($flag == 0)) { goto Exec; } exit(0); }
The if condition in handler is true when the first ping failure. But the goto statement inside if condition does not working. Please tell me where I did the mistake?
Note: I used eval instead of setjmp. I don't get any error or warning message for that.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Please help me in goto statement
by Corion (Patriarch) on Jun 05, 2009 at 11:19 UTC | |
by irah (Pilgrim) on Jun 05, 2009 at 11:38 UTC | |
Re: Please help me in goto statement
by JavaFan (Canon) on Jun 05, 2009 at 12:24 UTC | |
by ikegami (Patriarch) on Jun 05, 2009 at 15:02 UTC | |
Re: Please help me in goto statement
by tcf03 (Deacon) on Jun 05, 2009 at 17:25 UTC |