diff --git a/tools/hlrstat.pl b/tools/hlrstat.pl
new file mode 100755
index 0000000..a3fd2b8
--- /dev/null
+++ b/tools/hlrstat.pl
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+
+use strict;
+use DBI;
+my $dbh = DBI->connect("dbi:SQLite:dbname=hlr.sqlite3","","");
+
+
+my %mcc_names;
+my %mcc_mnc_names;
+
+sub read_networks($)
+{
+	my $filename = shift;
+	my $cur_name;
+
+	open(INFILE, $filename);
+	while (my $l = <INFILE>) {
+		chomp($l);
+		if ($l =~ /^#/) {
+			next;
+		}
+		if ($l =~ /^\t/) {
+			my ($mcc, $mnc, $brand, $r) = split(' ', $l, 4);
+			#printf("%s|%s|%s\n", $mcc, $mnc, $brand);
+			$mcc_mnc_names{"$mcc-$mnc"} = $brand;
+			$mcc_names{$mcc} = $cur_name;
+		} elsif ($l =~ /^(\w\w)\t(.*)/) {
+			#printf("%s|%s\n", $1, $2);
+			$cur_name = $2;
+		}
+	}
+	close(INFILE);
+}
+
+read_networks("networks.tab");
+
+my %oper_count;
+my %country_count;
+
+my $sth = $dbh->prepare("SELECT imsi FROM subscriber");
+
+$sth->execute();
+
+while (my $href = $sth->fetchrow_hashref) {
+	my ($mcc, $mnc) = $$href{imsi} =~ /(\d{3})(\d{2}).*/;
+	#printf("%s %s-%s \n", $$href{imsi}, $mcc, $mnc);
+	$oper_count{"$mcc-$mnc"}++;
+	$country_count{$mcc}++;
+}
+
+
+foreach my $c (keys %country_count) {
+	printf("%s: %d\n", $mcc_names{$c}, $country_count{$c});
+}
+	foreach my $k (keys %oper_count) {
+		printf("\t%s: %d\n", $mcc_mnc_names{$k}, $oper_count{$k});
+	}
+#//}
