App-mhping
view release on metacpan or search on metacpan
#!/usr/bin/perl -T
use 5.008008;
use utf8;
use warnings FATAL => 'all';
use threads;
use threads::shared;
use Thread::Queue;
use Getopt::Long;
use Scalar::Util qw(looks_like_number);
use Time::HiRes qw(sleep);
BEGIN {
$ENV{PATH} = '/bin:/usr/bin';
}
$|++;
our $VERSION = 0.1;
sub show_version {
print <<VERSION;
mhping : Version $VERSION
VERSION
return;
}
sub check_interval {
my $interval = shift;
if ( looks_like_number($interval) ) {
return 1;
}
else {
print "mhping: Bad timing interval!\n";
return;
}
}
sub parse_hosts {
my $hosts_file = shift;
= $worker->{rtt_queue}->pending
? $worker->{rtt_queue}->dequeue
: '';
$worker_count++;
if ( $worker->{thread}->is_running ) {
my $tid = $worker->{thread}->tid;
$stat{$tid}->{count} = $count if defined $count;
if ( looks_like_number($rtt) ) {
$stat{$tid}->{last} = $rtt;
if ( not defined $stat{$tid}->{min} ) {
$stat{$tid}->{min} = $rtt;
}
else {
$stat{$tid}->{min} = $rtt
if $rtt <= $stat{$tid}->{min};
}
if ( $status eq 'BLOCK' and $display_count >= 2 ) {
$rtt
= $stat{$tid}->{last}
? $stat{$tid}->{last}
: '-';
}
my $line_format
= '%2d. %-30s %10d'
. ( looks_like_number($rtt) ? ' %6.1f' : ' %6s' )
. " %6.1f %6.1f\n";
push(
@report_lines,
sprintf(
$line_format,
$worker_count,
$host,
$stat{$tid}->{count} || 0,
$rtt,
( run in 0.411 second using v1.01-cache-2.11-cpan-64827b87656 )