1INTRO(1) User Contributed Perl Documentation INTRO(1)
2
3
4
6 PDL::Intro - Introduction to the Perl Data Language
7
8 Version 2.4
9
10 "Why is it that we entertain the belief that for every purpose odd num‐
11 bers are the most effectual?" - Pliny the Elder.
12
13 Karl Glazebrook [karlglazebrook@yahoo.com] and Craig DeForest [defor‐
14 est@boulder.swri.edu
15
17 Perl Data Language (PDL) is a perl extension that is designed for sci‐
18 entific and bulk numeric data processing and display. It extends
19 perl's syntax and includes fully vectorized, multidimensional array
20 handling, plus several paths for device-independent graphics output.
21
22 "pdl" is an interactive command shell that is supplied with PDL; for
23 more information, see perldl(1).
24
25 Because PDL is a modular extension to perl, it is accessible to ordi‐
26 nary perl scripts: to write a command-line PDL script you just say "use
27 PDL;" at the top of an ordinary perl script. There is also a special‐
28 ized interactive shell (perldl(1)) that allows you to issue PDL com‐
29 mands interactively and that includes a path-based subroutine
30 autoloader similar to those found in MatLab and IDL (which are trade‐
31 marks of MathWorks and Kodak, respectively). The perldl shell allows
32 you to quickly manipulate and "play with" your data. (You can also
33 invoke it with the shorter command "pdl").
34
35 The "PDL" module is a complete Object-Oriented extension to Perl
36 (although you don't have to know what an object is to use it) which
37 allows large N-dimensional data sets, such as large images, spectra,
38 time series, etc to be stored efficiently and manipulated en masse.
39 For example with the PDL module we can write the perl code "$a=$b+$c",
40 where $b and $c are large datasets (e.g. 2048x2048 images), and get the
41 result in only a fraction of a second.
42
43 PDL variables (or piddles as they have come to be known) support a wide
44 range of fundamental data types - arrays can be bytes, short integers
45 (signed or unsigned), long integers, floats or double precision floats.
46 And because of the Object-Oriented nature of PDL new customised
47 datatypes can be derived from them.
48
49 Perl is an extremely good and versatile scripting language, well suited
50 to beginners, and allows rapid prototyping. The PDL extensions to the
51 language use Perl's object-oriented capabilities to seamlessly add
52 high-speed scientific capabilities that are themselves written in perl,
53 C and/or FORTRAN as appropriate -- so your code's "hot spots" run at
54 native compiled-language speed, while you work in the higher level perl
55 language (which itself runs faster than many other JIT-compiled or
56 interpreted languages).
57
58 External modules that have been incorporated into PDL include the com‐
59 plete Gnu Scientific Library; CFITSIO for FITS file handling; FFTW; the
60 Slatec matrix-handling package; and the PGPLOT, PLPLOT, Karma, and
61 OpenGL graphics libraries. Ancillary packages written in PDL itself
62 include image handling, curve fitting, matrix manipulation, coordinate
63 transformation, nonlinear data resampling, graphics I/O, and extensive
64 file I/O utilities. Because PDL programs are "just" perl with addi‐
65 tional modules loaded, the entire CPAN archive is also available to
66 your PDL scripts.
67
69 This manual page provides a general introduction to the underlying phi‐
70 losophy of PDL. For an overview over the rest of the documentation see
71 PDL::Index. As a beginner the following documents are particulary rec‐
72 ommended:
73
74 PDL::Impatient
75 Quick summary - PDL for the impatient
76
77 PDL::FAQ
78 The Frequently Asked Questions list for PDL.
79
80 PDL::Philosophy
81 Why another matrix language?
82
83 PDL::Indexing
84 An introduction to using smart indices in PDL.
85
86 PDL::NiceSlice
87 The all important slicing of piddles.
88
90 Copyright (C) Karl Glazebrook (karlglazebrook@yahoo.com), Tuomas J.
91 Lukka, (lukka@husc.harvard.edu) and Christian Soeller (c.soeller@auck‐
92 land.ac.nz) 1997-2002.
93
94 Commercial reproduction of this documentation in a different format is
95 forbidden without permission.
96
97
98
99perl v5.8.8 2003-05-21 INTRO(1)