in reply to Non-linear sub-routine launching
#!/usr/bin/perl -w use strict; use Net::Ping; sub make_ping_iterative (\@) { my $count = 0; my $arrayref = shift; my $p = Net::Ping->new("icmp"); return sub { if ($count >= @$arrayref){ # If you want to keep going for infinity, # Just uncomment the following line and remove the two + that follow # $count = 0 $p->close(); return ; } return ($p->ping($arrayref->[$count], 2), $arrayref->[$cou +nt++]); }; } my @ips = qw (209.6.x.x 209.6.x.x 209.6.x.x ); my $pinger = make_ping_iterative(@ips); while ( my ($up,$host) = $pinger->() ){ print $host, $up ? " is up\n" : " is down\n"; # Do other stuff here. }
|
|---|