The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use blib; # when using inside the dist tree
use PDL;  # this must be called before (!) 'use Inline Pdlpp' calls

# for this example you need the numerical recipes library
# edit the INC and LIBS info below to point
# Inline towards the location of include and library files

use Inline Pdlpp => Config =>
  INC => "-I$ENV{HOME}/include",
  LIBS => "-L$ENV{HOME}/lib -lnr -lm",
  AUTO_INCLUDE => <<'EOINC',
#include <math.h>
#include "nr.h"    /* for poidev */
#include "nrutil.h"  /* for err_handler */

static void nr_barf(char *err_txt)
{
  fprintf(stderr,"Now calling croak...\n");
  croak("NR runtime error: %s",err_txt);
}
EOINC
  BOOT => 'set_nr_err_handler(nr_barf);'; # catch errors at the perl level

use Inline Pdlpp; # the actual code is in the __Pdlpp__ block below

$a = zeroes(10) + 30;;
print $a->poidev(-3),"\n";

__DATA__

__Pdlpp__

# poisson deviates
pp_def('poidev',
	Pars => 'xm(); [o] pd()',
	GenericTypes => [L,F,D],
	OtherPars => 'long idum',
	Code => '$pd() = poidev((float) $xm(), &$COMP(idum));',
);