Skip to content

Instantly share code, notes, and snippets.

@sora
Created June 6, 2011 23:30
Show Gist options
  • Save sora/1011351 to your computer and use it in GitHub Desktop.
Save sora/1011351 to your computer and use it in GitHub Desktop.
use strict;
use warnings;
my( %lat, %name, %info, %extra );
open LAT, '<capitallatlong.txt';
open NAME, '<asname-20110606.txt';
open INFO, '<asn-20070110.txt';
open EXT, '<asinfo_20110406.list';
while (<INFO>) {
chomp;
my( $irr, $cc, $cat, $asn, $n, $date ) = split(/\|/);
$info{$asn} = { cc => $cc, irr => $irr, date => $date };
}
while (<NAME>) {
chomp;
if( /^AS(\d+)\|(.*?)$/ ) {
$name{$1} = $2;
}
}
while (<LAT>) {
chomp;
my( $cc, $capital, $conti, $lat, $long ) = split(/\|/);
$lat{$cc} = { conti => $conti, lat => $lat, long => $long };
}
while (<EXT>) {
chomp;
my( $asn, $cc, $irr, $date, $name ) = split(/\|/);
$extra{$asn} = { cc => $cc, irr => $irr, date => $date };
}
foreach my $asn (keys %name) {
my( $conti, $lat, $long );
my $cc = $info{$asn}->{cc};
my $irr = $info{$asn}->{irr};
my $date = $info{$asn}->{date};
if( !defined($cc) ) {
$cc = $extra{$asn}->{cc};
}
if( !defined($irr) ) {
$irr = $extra{$asn}->{irr};
}
if( !defined($date) ) {
$date = $extra{$asn}->{date};
}
$cc = "" if( !defined($cc) );
$irr = "" if( !defined($irr) );
$date = "" if( !defined($date) );
if( defined($lat{$cc}->{conti}) ) {
$conti = $lat{$cc}->{conti};
$lat = $lat{$cc}->{lat};
$long = $lat{$cc}->{long};
} else {
$conti = $lat = $long = "";
}
printf("%s|%s|%s|%s|%s|%s|%s|%s\n",
$asn, $name{$asn}, $cc, $conti, $irr, $date, $lat, $long);
}
close(LAT);
close(NAME);
close(INFO);
close(EXT);
exit 0;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment