1use strict; 2use warnings; 3use Getopt::Long; 4 5use POE qw(Component::Client::DNS::Recursive); 6 7my $trace; 8GetOptions ('trace' => \$trace); 9 10my $host = shift || die "Nothing to query\n"; 11my $type = shift; 12 13POE::Session->create( 14 package_states => [ 15 'main', [qw(_start _response _trace)], 16 ], 17); 18 19$poe_kernel->run(); 20exit 0; 21 22sub _start { 23 POE::Component::Client::DNS::Recursive->resolve( 24 event => '_response', 25 host => $host, 26 ( $type ? ( type => $type ) : () ), 27 ( $trace ? ( trace => '_trace' ) : () ), 28 ); 29 return; 30} 31 32sub _trace { 33 my $packet = $_[ARG0]; 34 return unless $packet; 35 print $packet->string; 36 return; 37} 38 39sub _response { 40 my $packet = $_[ARG0]->{response}; 41 return unless $packet; 42 print $packet->string; 43 return; 44} 45