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