#!/usr/local/bin/perl -w use strict; use TopGUI; use AnyEvent; use TopCapture; my $tsc = TopCapture->new; $tsc->start; my $tsg = TopGUI->new(); $tsg->reg_cb( "clear", sub { $tsc->reset; } ); my $my_ip = IO::Socket::INET->new( PeerAddr => 'google.com', PeerPort => 80, )->sockhost; my $timer = AnyEvent->timer( after => 0, interval => 1, cb => sub { my( $packets, $dnsmap ) = $tsc->stats; my $max = $tsg->{ lbox }->height(); my @lines = (); for my $name ( sort { $dnsmap->{ $b } <=> $dnsmap->{ $a } } sort keys %$dnsmap ) { next if $name eq $my_ip; push @lines, sprintf "%4d %s", $dnsmap->{ $name }, $name; last if --$max == 0; } $tsg->update( $packets, \@lines ); }, ); $tsg->start;