#!/perl/bin -w use strict; # do you opens like this. no hard coded names. $! contains error messages if # the open fails so print out perls helpful message # my $log = "tasco2.log"; # open LOG, $log or die "Can not open $log, Perl says the reason is $!\n"; # define model types in a hash lookup table my %modhash = ( 9 => "no connect", 18 => "21000bps", 20 => "V34", 28 => "29333bps", 31 => "33333bps", 34 => "V90 digital", 39 => "44000bps", 40 => "45333bps", 43 => "49333bps", 44 => "50666bps", 45 => "V92 PCM Upstream", ); my $sessidlast = 0; my $newsession = 0; my $modtypelast = ''; while (my $line = ) { chomp $line; my @temp = split /\s*=\s*/, $line; if ($temp[1] > 100) { # we have a session id my $sessid = $temp[1]; do { $newsession = 0; next } if $sessid == $sessidlast; $sessidlast = $sessid; $newsession = 1; print "\n$sessid\t"; } else { # we have a modtype next unless $newsession; # skip if we don't have a new session my $modtype = $temp[1]; next if $modtype == $modtypelast; $modtypelast = $modtype; print get_modtype($modtype), "\t"; } } sub get_modtype { my $modtype = shift; if (defined $modhash{$modtype}) { return $modhash{$modtype} . "\t"; } else { return "Unknown modtype $modtype!\t"; } } __DATA__ x.x.nas.6.9.1.1.40.1001 = 1134468706 x.x.nas.6.9.1.1.14.1001 = 9 x.x.nas.6.9.1.1.13.1001 = 16 x.x.nas.6.9.1.1.12.1001 = 16 x.x.nas.6.9.1.1.40.1001 = 1134468706 x.x.nas.6.9.1.1.14.1001 = 34 x.x.nas.6.9.1.1.13.1001 = 19 x.x.nas.6.9.1.1.12.1001 = 30 x.x.nas.6.9.1.1.40.1001 = 1134485731 x.x.nas.6.9.1.1.14.1001 = 45 x.x.nas.6.9.1.1.13.1001 = 16 x.x.nas.6.9.1.1.12.1001 = 16 x.x.nas.6.9.1.1.40.1001 = 1134485733 x.x.nas.6.9.1.1.x.x = 9