#!/usr/bin/perl -w # Color traceroute # 20041029 altblue@n0i.net use strict; use Term::ANSIColor qw(:constants); use FileHandle (); use vars qw($TRACEROUTE $tr @PATTERNS); use constant TRACEROUTE => '/bin/traceroute'; @PATTERNS = ( [ qr/^\s*(\d+)/ => YELLOW ], [ qr/(\*)/ => BOLD . GREEN ], [ qr/(\![A-Z]*)/ => BOLD . BLINK . RED ], [ qr/(\d+\.\d+)(?= ms)/ => BLUE ], [ qr/(?<=\()((?:\d+\.){3}\d+)(?=\))/ => DARK . CYAN ], ); $| = 1; $tr = FileHandle->new(TRACEROUTE . " @ARGV |") or die $/; END { $tr->close if $tr; } while (<$tr>) { foreach my $p (@PATTERNS) { s/$p->[0]/$p->[1] . $1 . RESET/ge; } print; }