The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

IP::Country::DB_File - IPv4 and IPv6 to country translation using DB_File

VERSION

version 3.03

SYNOPSIS

    use IP::Country::DB_File;

    my $ipcc = IP::Country::DB_File->new();
    my $cc = $ipcc->inet_atocc('1.2.3.4');
    my $cc = $ipcc->inet_atocc('host.example.com');
    my $cc = $ipcc->inet6_atocc('1a00:300::');
    my $cc = $ipcc->inet6_atocc('ipv6.example.com');

DESCRIPTION

IP::Country::DB_File is a light-weight module for fast IP address to country translation based on DB_File. The country code database is stored in a Berkeley DB file. You have to build the database using build_ipcc.pl or IP::Country::DB_File::Builder before you can lookup country codes.

This module tries to be API compatible with the other IP::Country modules. The installation of IP::Country is not required.

There are many other modules for locating IP addresses. Neil Bowers posted an excellent review. Some features that make this module unique:

  • IPv6 support.

  • Pure Perl. Math::Int64 is needed to build a database with IPv6 addresses but the lookup code only uses Perl core modules.

  • Reasonably fast and accurate.

  • Builds the database directly from the statistics files of the regional internet registries. No third-party tie-in.

CONSTRUCTOR

new

    my $ipcc = IP::Country::DB_File->new( [$db_file] );

Creates a new object and opens the database file $db_file. $db_file defaults to ipcc.db. The database file can be built with IP::Country::DB_File::Builder or the build_ipcc.pl command.

METHODS

inet_atocc

    my $cc = $ipcc->inet_atocc($host);

Looks up the country code of host $host. $host can either be an IPv4 address in dotted quad notation or a hostname.

If successful, returns the country code. In most cases this is an ISO-3166-1 alpha-2 country code, but there are also generic codes like EU for Europe or AP for Asia/Pacific. All country codes consist of two uppercase letters.

Returns ** for private IP addresses.

Returns undef if there's no country code listed for the IP address, the DNS lookup fails, or the host string is invalid.

inet_ntocc

    my $cc = $ipcc->inet_ntocc($packed_address);

Like inet_atocc but works with a packed IPv4 address.

inet6_atocc

    my $cc = $ipcc->inet6_atocc($host);

Like inet_atocc but works with IPv6 addresses or hosts.

inet6_ntocc

    my $cc = $ipcc->inet6_ntocc($packed_address);

Like inet_ntocc but works with a packed IPv6 address.

db_time

    my $time = $ipcc->db_time();

Returns the mtime of the DB file.

SEE ALSO

IP::Country, IP::Country::DB_File::Builder

AUTHOR

Nick Wellnhofer <wellnhofer@aevum.de>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Nick Wellnhofer.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.