Masahiro Nagano > DBIx-DSN-Resolver-0.03 > DBIx::DSN::Resolver

Download:
DBIx-DSN-Resolver-0.03.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.03   Source   Latest Release: DBIx-DSN-Resolver-0.09

NAME ^

DBIx::DSN::Resolver - Resolve hostname within dsn string

SYNOPSIS ^

  use DBIx::DSN::Resolver;

  my $dsn = 'dbi:mysql:database=mytbl;host=myserver.example'

  my $resolver = DBIx::DSN::Resolver->new();
  $dsn = $resolver->resolv($dsn);

  is $dsn, 'dbi:mysql:database=mytbl;host=10.0.9.41';

DESCRIPTION ^

DBIx::DSN::Resolver parses dsn string and resolves hostname within dsn. This module allows customize the resolver function.

CUSTOMIZE RESOLVER ^

use the resolver argument. This sample code makes resolver cache with Cache::Memory::Simple.

  use Cache::Memory::Simple;
  use Socket;
    
  my $DNS_CACHE = Cache::Memory::Simple->new(
      size => 256,
  );
      
  my $r = DBIx::DSN::Resolver->new(
     resolver => sub {
         my $host = shift;
         my $ipr = $DNS_CACHE->get($host);
         my $ip = $ipr ? $$ipr : undef;
         if ( !$ipr ) {
              $ip = Socket::inet_aton($host);
              $DNS_CACHE->set($host,\$ip,5);
          }
          return unless $ip;
          Socket::inet_ntoa($ip);
      }
  );
  $dsn = $resolver->resolv($dsn);

Default:

  resolver => sub { Socket::inet_ntoa(Socket::inet_aton(@_)) }

AUTHOR ^

Masahiro Nagano <kazeburo {at} gmail.com>

SEE ALSO ^

LICENSE ^

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

syntax highlighting: