# PDL Object Constructors

When using PDL one creates and manipulates PDL object,
whimsically called *piddles*.
These objects represent an array of arbitrary dimensionality and unlike most of Perl,
of a certain numerical datatype.

A PDL object may be created using the `pdl`

command,
which converts a Perl array structure to a PDL.

my $pdl = pdl([[1,2,3],[4,5,6],[7,8,9]]);

To see what the PDL object contains, since PDL overloads stringification, simply print it out. To get other information, the `info`

method is also useful.

my $pdl = pdl([[1,2,3],[4,5,6],[7,8,9]]); say $pdl; say $pdl->info;

Many of the other PDL contstructor functions take the dimensionality as their argument. For example `sequence`

creates a PDL whose values increment for each element.

# create a 5x5 PDL my $pdl = sequence 5,5; say $pdl;

Other such constructors are `zeros`

, `ones`

, `xvals`

, `yvals`

, `zvals`

, and `rvals`

. The first two are obvious, creating a PDL filled with 0 or 1. The next three create a PDL of a given dimensionality, but whose values are taken from their x, y, or z component respectively. `rvals`

creates a PDL whose values are the "distance" from the center of the PDL (or whichever other center you specify).

### Exercise

Create a three dimensional PDL using any of the above constructors and print out its information using the `info`

method.

my $pdl = ...; say $pdl->info;