Perl Data Language

Scientific computing with Perl

Get PDL Get Docs Get Help

Funny M51 Galaxy 3D wire drawing 2D plot example use NiceSlice; Perldl prompt 3D surface plot 3D graphics with OpenGL 3D brain MRI Galaxy and contours Old PDL logo

Recent News

2024-11-29
Announcing the 2024 Advent calendar!
2024-11-02
Announcing the release of PDL 2.094 to CPAN:
  • Transform::Proj4 now thread-safe, has correct units
  • IO::HDF updated to recent HDF4 API
  • IO::FlexRaw::mapflex now doesn't allocate memory
  • incorporate PDL::Parallel::threads and Test::PDL
2024-10-07
Demos for PDL::Transform::Proj4 and PDL::Opt::Simplex have been added to the site.
2024-09-30
PDL::Minuit 0.001 has been released to CPAN, marking its independence; it will not feature in the next release of main PDL.
2024-09-30
PDL::Graphics::IIS 0.001 has been released to CPAN, marking its independence; it will not feature in the next release of main PDL.
2024-09-29
Announcing the release of PDL 2.093 to CPAN:
  • fix minmax with NaNs
  • enhance Transform::Cartography::clean_lines
  • IO::Pic use IO::GD for JPEG if available, so Windows can read them
  • Primitive::matmult can handle bad values
2024-09-19
Gimp-Perl 2.38 has been released to CPAN.
2024-09-18
PDL::Graphics::Gnuplot 2.028 has been released to CPAN:
  • handle Gnuplot 6
  • fix various array-ref handling bugs
  • methods to generate Gnuplot code not just execute
2024-09-17
PGPLOT 2.33 has been released to CPAN:
  • incorporate PGPLOT-related PDL graphics modules
2024-09-15
PDL::DSP::Windows 0.102 has been released to CPAN.
2024-09-07
Announcing the release of PDL 2.092 to CPAN:
  • fix badvalue propagation
  • core support for PDL::Parallel::threads
2024-09-06
PDL::Parallel::threads 0.06 has been released to CPAN.
2024-09-06
PDL::LinearAlgebra 0.40 has been released to CPAN:
  • better LAPACK detection on Linux, Strawberry Perl, and MacOS
  • fix mtoeplitz
  • $real x $native_complex fixed
2024-04-25
PDL::Opt::NonLinear 0.09 has been released to CPAN.
2024-04-22
PDL::Graphics::Prima 0.21 has been released to CPAN:
  • colourmap support
2024-04-22
PDL::Graphics::PLplot 0.84 has been released to CPAN:
  • add perldl demo
  • make memory allocation routines error-check
2024-04-22
PDL::Graphics::Simple 1.011 has been released to CPAN.
2024-04-15
New location for SciPDL, a drag-and-drop PDL installer for MacOS 10.9+
2024-03-26
PDL::Opt::GLPK 0.07 has been released to CPAN.
2024-02-24
PDL::FFTW3 0.19 has been released to CPAN.
2023-03-26
PDL::OpenCV 0.001 has been released to CPAN.
2023-01-12
PDL::Transform::Color 1.007 has been released to CPAN:
2023-01-12
PDL::Graphics::ColorSpace 0.203 has been released to CPAN:
  • add rgb_to_lab, lab_to_rgb, rgb_{to,from}_linear
  • add lsRGB colour space
  • operations can work inplace
2022-04-27
PDL::NetCDF 4.24 has been released to CPAN.
2021-02-16
ExtUtils::F77 1.26 has been released to CPAN.
2017-02-25
Announcing the second release of OpenGL::Modern 0.04 to CPAN.

The complete version history of PDL is available in MetaCPAN.

PDL ("Perl Data Language") gives standard Perl the ability to compactly store and speedily manipulate the large N-dimensional data arrays which are the bread and butter of scientific computing.

PDL turns Perl into a free, array-oriented, numerical language similar to (but, we believe, better than) such commercial packages as IDL and MatLab. One can write simple perl expressions to manipulate entire numerical arrays all at once. A simple interactive shell, perldl, is provided for use from the command line along with the PDL module for use in Perl scripts.

Integration with other libraries

To name but a few, there are PDL bindings to: For more, select the "External Libs" link in the left-hand sidebar.

High performance

A recent performance comparison showed PDL highly competitive with (faster than) NumPy even with Numba, for numerical tasks. This is in part due to the automatic "out of the box" POSIX threading in PDL. As another mechanism for parallel computing, there is also PDL::Parallel::threads, which works with Perl's "ithreads" implementation for more explicit parallelism. The LAPACK binding (see above) is yet another way to achieve fast performance.

For fast graphics performance, there is the OpenGL binding (see above).

Modern development

PDL is developed using git, on GitHub. Every commit gets continuous integration (CI) testing against over 50 downstream modules, and on Windows, MacOS, Linux, and FreeBSD.

Widely available

As well as being installable from CPAN, PDL is packaged by Debian and most other free OSes, and a special edition of Strawberry Perl.

For more, select the "Get PDL" link in the top dashboard.