Statistics modules in Perl Data Language, with a quick-start guide for non-PDL people. They make the PDL shell work like R, but with PDL threading (fast automatic iteration) of procedures including t-test, linear regression, and k-means clustering.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


OS Build status
Linux Build Status
Windows Build status

Coverage Status CPAN version

This is a collection of statistics modules in Perl Data Language, with a quick-start guide for non-PDL people.

They make perldl--the simple shell for PDL--work like a teenie weenie R, but with PDL threading--"the fast (and automagic) vectorised iteration of 'elementary operations' over arbitrary slices of multidimensional data"--on procedures including t-test, ordinary least squares regression, and kmeans.

Of course, they also work in perl scripts.


  • PDL

    Perl Data Language. Preferably installed with a Fortran compiler. A few methods (logistic regression and all plotting methods) will only work with a Fortran compiler and some methods (ordinary least squares regression and pca) work much faster with a Fortran compiler.

    The recommended PDL version is 2.4.8. PDL-2.4.7 introduced a bug in lu_decomp() which caused a few functions in PDL::Stats::GLM to fail. Otherwise the minimum compatible PDL version is 2.4.4.

  • GSL (Optional)

    GNU Scientific Library. This is required by PDL::Stats::Distr and PDL::GSL::CDF, the latter of which provides p-values for PDL::Stats::GLM. GSL is otherwise NOT required for the core PDL::Stats modules to work, ie Basic, Kmeans, and GLM.

  • PGPLOT (Optional)

    PDL-Stats currently uses PGPLOT for plotting. There are three pgplot/PGPLOT modules, which cause much confusion upon installation. First there is the pgplot Fortran library. Then there is the perl PGPLOT module, which is the perl interface to pgplot. Finally there is PDL::Graphics::PGPLOT, which depends on pgplot and PGPLOT, that PDL-Stats uses for plotting.



For standard perl module installation in *nix environment form source, to install all included modules, extract the files from the archive by entering this at a shell,

tar xvf PDL-Stats-xxx.tar.gz

then change to the PDL-Stats directory,

cd PDL-Stats-xxx

and run the following commands:

perl Makefile.PL
make test
sudo make install

If you don't have permission to run sudo, you can specify an alternative path,

perl Makefile.PL PREFIX=/home/user/my_perl_lib
make test
make install

then add /home/user/my_perl_lib to your PERL5LIB environment variable.

If you have trouble installing PDL, you can look for help at the PDL wiki or PDL mailing list.


Thanks to Sisyphus, Windows users can download and install the ppm version of PDL-Stats and all dependencies using the PPM utility included in ActiveState perl or Strawberry perl. You can also get the PPM utility from CPAN.

ppm install
ppm install
ppm install


After installing, you can find documentation for the modules with the perldoc command.

perldoc PDL::Stats
perldoc PDL::Stats::Basic


You can also look for information at:


Search CPAN

Mailing list

If you notice a bug or have a request, please submit a report at

If you would like to help develop or maintain the package, please email me at the address below.


Copyright (C) 2009-2012 Maggie J. Xiong

All rights reserved. There is no warranty. You are allowed to redistribute this software / documentation as described in the file COPYING in the PDL distribution.