The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
  use strict;
  use POE;
  use POE::Component::Server::NSCA;

  my $nagios_cmd = '/usr/local/nagios/var/rw/nagios.cmd';

  my $nscad = POE::Component::Server::NSCA->spawn(
        password => 'moocow',
        encryption => 1,
  );

  POE::Session->create(
        package_states => [
           'main' => [qw(_start _message)],
  );

  $poe_kernel->run();
  exit 0;

  sub _start {
     $poe_kernel->post( $nscad->session_id(), 'register', event => '_message', context => 'moooo!' );
     return;
  }

  sub _message {
     my ($message,$context) = @_[ARG0,ARG1];

     print "Received message from: ", $message->{peeraddr}, "\n";

     # Send the check to the Nagios command file

     my $time = time();
     my $string;

     if ( $message->{svc_description} ) {
        $string = "[$time] PROCESS_SERVICE_CHECK_RESULT";
        $string = join ';', $string, $message->{host_name}, $message->{svc_description},
                    $message->{return_code}, $message->{plugin_output};
     }
     else {
        $string = "[$time] PROCESS_HOST_CHECK_RESULT";
        $string = join ';', $string, $message->{host_name}, $message->{return_code},
                    $message->{plugin_output};
     }

     print { open my $fh, '>>', $nagios_cmd or die "$!\n"; $fh } $string, "\n";

     return;
  }