package InternetStats;
use strict;
require Exporter;
# europe http://www.internetworldstats.com/stats4.htm
our @ISA = qw(Exporter);
our @EXPORT= qw(GetInetStats);

use IO::File;

sub GetInetStats {
    my $fh= IO::File->new("internetstats.txt", "r") or die "internetstats: $!\n";

    my %inetstats;
    my $number= qr([0-9.,]+|n/a|-);
    my $pct= qr(-?[0-9.,]+\s%|n/a|-);
    while (<$fh>) {
        s/\s+$//;
        if (/name,pop2004,inet2004/) {
            last;
        }
        elsif (!/^$/) {
            warn "cannot parse $_\n";
        }
    }
    while (<$fh>) {
        s/\s+$//;
        if (/name,pop2004,inet2000,inet2004/) {
            last;
        }
        elsif (m{(.*)\s($number)\s($number)\s$pct\s$pct\s$pct$}) {
            my ($name, $pop2004, $inet2004)= ($1, $2, $3);
            $pop2004 =~ s/[,.]//g; $inet2004 =~ s/[,.]//g;
            $pop2004= -1 if ($pop2004 !~ /\d/);
            $inet2004= -1 if ($inet2004 !~ /\d/);

            $inetstats{lc($name)}= { name=>$name, population=>$pop2004, internetusers=>$inet2004 };
        }
        elsif (!/^$/) {
            warn "cannot parse $_\n";
        }
    }
    while (<$fh>) {
        s/\s+$//;
        if (m{^(.*)\s($number)\s$number\s($number)\s$pct\s$pct\s$pct$}) {
            my ($name, $pop2004, $inet2004)= ($1, $2, $3);
            $pop2004 =~ s/[,.]//g; $inet2004 =~ s/[,.]//g;
            $pop2004= -1 if ($pop2004 !~ /\d/);
            $inet2004= -1 if ($inet2004 !~ /\d/);

            $inetstats{lc($name)}= { name=>$name, population=>$pop2004, internetusers=>$inet2004 };
        }
        elsif (!/^$/) {
            warn "cannot parse $_\n";
        }
    }
    $fh->close();
    return \%inetstats;
}

1;
