App-ipinfo
view release on metacpan or search on metacpan
lib/App/ipinfo.pm view on Meta::CPAN
use App::ipinfo;
App::ipinfo->run( \%options, @ip_addresses );
Control most of it yourself:
use App::ipinfo;
my $app = App::ipinfo->new(
template => '%c',
token => ...,
);
foreach my $ip ( @ip_addresses ) {
my $info = $app->get_info($ip);
next unless defined $info;
$app->output( $app->format($info) );
}
=head1 DESCRIPTION
=head2 Formatting
Most of the data provided by IPinfo has an C<sprintf>-style formatting
code, and for everything else you can use C<%j> to get JSON that you can
format with B<jq> for some other tool.
=over 4
=item * C<%a> - the ASN of the organization
=item * C<%c> - the city of the organization
=item * C<%C> - the country code of the organization
=item * C<%f> - the emoji flag of the country
=item * C<%h> - the hostname for the IP address
=item * C<%i> - the IP address
=item * C<%j> - all the data as JSON, in a UTF-8 decoded string
=item * C<%k> - the continent of the organization
=item * C<%L> - the latitude of the organization
=item * C<%l> - the longitude of the organization
=item * C<%n> - the country name of the organization
=item * C<%N> - newline
=item * C<%o> - the organization name
=item * C<%r> - the region of the organization (i.e. state or province)
=item * C<%t> - the timezone of the organization (e.g. C<America/New_York> )
=item * C<%T> - tab
=item * C<%%> - literal percent
=back
=head2 Class methods
=over 4
=item * new( HASH )
Allowed keys:
=over 4
=item * error_fh
The filehandle to send error output to. The default is standard error.
=item * template
The template.
=item * output_fh
The filehandle to send error output to. The default is standard output.
=item * token
The API token from IPinfo.io.
=back
=cut
sub new ($class, %hash) {
state $defaults = {
output_fh => $class->default_output_fh,
error_fh => $class->default_error_fh,
template => $class->default_template,
token => $class->get_token,
};
my %args = ( $defaults->%*, %hash );
bless \%args, $class;
}
=item * looks_like_template(STRING)
Returns true if STRING looks like a template. That is, it has a C<%>
followed by a non-whitespace character. This will get more sophisticated
later.
=cut
sub looks_like_template ($either, $string) {
$string =~ m/%\S/;
}
=item * CLASS->run( [TEMPLATE,] IP_ADDRESS [, IP_ADDRESS ... ] )
( run in 2.663 seconds using v1.01-cache-2.11-cpan-6fb7bf0f510 )