PDL::QuickStartp - ອອນລາຍໃນຄລາວ

ນີ້ແມ່ນຄໍາສັ່ງ PDL::QuickStartp ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


PDL::QuickStart - ການແນະນໍາດ່ວນກ່ຽວກັບຄຸນສົມບັດ PDL.

ສະຫຼຸບສັງລວມ


ສະຫຼຸບໂດຍຫຍໍ້ຂອງລັກສະນະ PDL ຕົ້ນຕໍແລະວິທີການນໍາໃຊ້ພວກມັນ.

ລາຍລະອຽດ


ການນໍາສະເຫນີ
Perl ເປັນ​ພາ​ສາ​ສະ​ຄຣິບ​ທີ່​ດີ​ທີ່​ສຸດ​ແລະ versatile​, ເຫມາະ​ສົມ​ກັບ​ຜູ້​ເລີ່ມ​ຕົ້ນ​ແລະ​
ອະນຸຍາດໃຫ້ສ້າງຕົວແບບຢ່າງໄວ. ຢ່າງໃດກໍຕາມ, ຈົນກ່ວາບໍ່ດົນມານີ້, ມັນບໍ່ໄດ້ສະຫນັບສະຫນູນໂຄງສ້າງຂໍ້ມູນ
ອະ​ນຸ​ຍາດ​ໃຫ້​ມັນ​ເພື່ອ​ເຮັດ​ໃຫ້​ຈໍາ​ນວນ​ໄວ crunching​.

ຢ່າງໃດກໍຕາມກັບການພັດທະນາຂອງ Perl v5, Perl ໄດ້ມາ 'ວັດຖຸ'. ເພື່ອເຮັດໃຫ້ມັນງ່າຍດາຍຜູ້ໃຊ້
ສາ​ມາດ​ກໍາ​ນົດ​ປະ​ເພດ​ຂໍ້​ມູນ​ພິ​ເສດ​ຂອງ​ເຂົາ​ເຈົ້າ​ເອງ​, ແລະ​ຂຽນ​ກິດ​ຈະ​ກໍາ​ທີ່​ກໍາ​ນົດ​ເອງ​ເພື່ອ​ຈັດ​ການ​ໃຫ້​ເຂົາ​ເຈົ້າ​
ບໍ່ວ່າຈະເປັນພາສາລະດັບຕ່ໍາ (C ແລະ Fortran) ຫຼືໃນ Perl ຕົວຂອງມັນເອງ.

ນີ້ໄດ້ຖືກຂຸດຄົ້ນຢ່າງເຕັມສ່ວນໂດຍນັກພັດທະນາ PerlDL. ໂມດູນ 'PDL' ແມ່ນສົມບູນ
Object-Oriented extension ກັບ Perl (ເຖິງແມ່ນວ່າທ່ານບໍ່ຈໍາເປັນຕ້ອງຮູ້ວ່າວັດຖຸແມ່ນຫຍັງ
ໃຊ້ມັນ) ເຊິ່ງອະນຸຍາດໃຫ້ຊຸດຂໍ້ມູນຂະຫນາດໃຫຍ່ N-dimensional, ເຊັ່ນ: ຮູບພາບຂະຫນາດໃຫຍ່, spectra, ເວລາ
ຊຸດ, ແລະອື່ນໆທີ່ຈະເກັບໄວ້ ປະສິດທິຜົນ ແລະການຫມູນໃຊ້ en ຕັ້ງມະຫາຊົນ. ຕົວຢ່າງເຊັ່ນ PDL
ໂມດູນພວກເຮົາສາມາດຂຽນລະຫັດ Perl "$a = $b + $c", ເຊິ່ງ $b ແລະ $c ເປັນຊຸດຂໍ້ມູນຂະຫນາດໃຫຍ່ (ເຊັ່ນ:
2048x2048 ຮູບ​ພາບ​)​, ແລະ​ໄດ້​ຮັບ​ຜົນ​ໄດ້​ຮັບ​ໃນ​ພຽງ​ແຕ່​ສ່ວນ​ຫນຶ່ງ​ຂອງ​ວິ​ນາ​ທີ​.

ຕົວແປ PDL (ຫຼື 'piddles' ຍ້ອນວ່າພວກເຂົາເປັນທີ່ຮູ້ຈັກ) ສະຫນັບສະຫນູນລະດັບຄວາມກ້ວາງຂອງ
ປະເພດຂໍ້ມູນພື້ນຖານ - arrays ສາມາດເປັນ bytes, short integers (signed or unsigned), long
ຈຳນວນເຕັມ, floats ຫຼື double precision floats. ແລະເນື່ອງຈາກວ່າລັກສະນະ Object-Oriented ຂອງ
ປະເພດຂໍ້ມູນແບບປັບແຕ່ງໃໝ່ PDL ສາມາດໄດ້ມາຈາກພວກມັນ.

ເຊັ່ນດຽວກັນກັບໂມດູນ PDL, ທີ່ສາມາດນໍາໃຊ້ໄດ້ໂດຍໂຄງການ Perl ປົກກະຕິ, PerlDL ມາພ້ອມກັບ a
ເສັ້ນຄໍາສັ່ງ Perl shell, ເອີ້ນວ່າ 'perldl', ເຊິ່ງສະຫນັບສະຫນູນການແກ້ໄຂເສັ້ນຄໍາສັ່ງ. ໃນ
ປະສົມປະສານກັບໂມດູນກາຟິກ PDL ຕ່າງໆນີ້ຊ່ວຍໃຫ້ຂໍ້ມູນສາມາດຫຼີ້ນໄດ້ງ່າຍ
ກັບ​ແລະ​ສະ​ແດງ​ໃຫ້​ເຫັນ​.

ຊ່ວຍເຫຼືອ
PDL ປະກອບດ້ວຍເອກະສານທີ່ກວ້າງຂວາງ, ມີທັງພາຍໃນ perdl or pdl2 ຫອຍ ແລະ
ຈາກບັນທັດຄໍາສັ່ງ, ການນໍາໃຊ້ໂຄງການ "pdldoc". ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ພະຍາຍາມອັນໃດອັນຫນຶ່ງຈາກ:

pdl> ຊ່ວຍ
$ pdldoc

ສໍາເນົາ HTML ຂອງເອກະສານຄວນຈະມີຢູ່. ເພື່ອຊອກຫາສະຖານທີ່ຂອງເຂົາເຈົ້າ, ພະຍາຍາມ
ຕໍ່ໄປນີ້:

pdl> foreach (ແຜນທີ່{"$_/PDL/HtmlDocs"}@INC ) { p "$_\n" ຖ້າ -d $_ }

Perl ຕາຕະລາງ ແລະ ວິທີການ PDL extends ໃຫ້ເຂົາເຈົ້າ
ໂຄງສ້າງຂໍ້ມູນ Perl ພື້ນຖານແມ່ນຕົວແປ scalar, ເຊັ່ນ $x, ເຊິ່ງສາມາດຖືຕົວເລກ.
ຫຼືສະຕຣິງ, ລາຍຊື່ ຫຼືອາເຣຂອງເກັດ, ຕົວຢ່າງ @x, ແລະ arrays ທີ່ກ່ຽວຂ້ອງ/hashes ຂອງ scalar,
ຕົວຢ່າງ %x.

Perl v5 ແນະນຳໂຄງສ້າງຂໍ້ມູນ ແລະວັດຖຸຂອງ Perl. ຕົວແປແບບງ່າຍໆ $x ດຽວນີ້
ປະເພດຂໍ້ມູນທີ່ກໍານົດໂດຍຜູ້ໃຊ້ຫຼືວັດຖຸເຕັມທີ່ blown (ຕົວຈິງແລ້ວມັນເປັນການອ້າງອິງ (ສະຫຼາດ
"ຕົວຊີ້") ຕໍ່ກັບເລື່ອງນີ້ແຕ່ວ່າມັນບໍ່ກ່ຽວຂ້ອງກັບການນໍາໃຊ້ທົ່ວໄປຂອງ perlDL)

ແນວຄວາມຄິດພື້ນຖານທີ່ຢູ່ເບື້ອງຫລັງ perlDL ແມ່ນເພື່ອອະນຸຍາດໃຫ້ $x ຖື 1D spectrum ທັງຫມົດ, ຫຼື 2D.
ຮູບພາບ, cube ຂໍ້ມູນ 3D, ແລະອື່ນໆເຖິງຊຸດຂໍ້ມູນ N-ມິຕິລະດັບຂະຫນາດໃຫຍ່. ເຫຼົ່ານີ້ສາມາດເປັນ
manipulated ທັງຫມົດໃນເວລາດຽວກັນ, ເຊັ່ນ: "$a = $ b + 2" ດໍາເນີນການ vector ກ່ຽວກັບແຕ່ລະຄ່າໃນ
spectrum/image/etc.

ທ່ານອາດຈະຖາມວ່າ: "ເປັນຫຍັງຈຶ່ງບໍ່ພຽງແຕ່ເກັບຮັກສາ spectrum ເປັນບັນຊີລາຍຊື່ແບບ Perl @x ແບບງ່າຍດາຍກັບແຕ່ລະຄົນ
pixel ເປັນລາຍການລາຍການບໍ?” ສອງຄໍາຕອບທີ່ສໍາຄັນນີ້ແມ່ນ ຫນ່ວຍຄວາມຈໍາ ແລະ ຄວາມ​ໄວ. ເນື່ອງຈາກວ່າພວກເຮົາ
ຮູ້ວ່າ spectrum ຂອງພວກເຮົາປະກອບດ້ວຍຕົວເລກທີ່ບໍລິສຸດທີ່ພວກເຮົາສາມາດເກັບຮັກສາພວກມັນຢ່າງແຫນ້ນຫນາຢູ່ໃນບລັອກດຽວ
ໜ່ວຍຄວາມຈຳທີ່ກົງກັບອາເຣຕົວເລກແບບ C. ນີ້ໃຊ້ເວລາເຖິງຄວາມຈໍາຫນ້ອຍກວ່າຫຼາຍ
ບັນຊີລາຍຊື່ Perl ທຽບເທົ່າ. ຫຼັງຈາກນັ້ນ, ມັນງ່າຍທີ່ຈະຜ່ານຕັນຂອງຄວາມຊົງຈໍານີ້ໄປສູ່ການເພີ່ມໄວ
ປົກກະຕິ, ຫຼືຟັງຊັນ C ອື່ນໆທີ່ຈັດການກັບ arrays. ດັ່ງນັ້ນ, perlDL ແມ່ນຫຼາຍ
ໄວ --- ຕົວຢ່າງຫນຶ່ງສາມາດຄູນຮູບ 2048 * 2048 ໃນເວລາດຽວກັບມັນ
ຈະໃຊ້ເວລາໃນ C ຫຼື FORTRAN (0.1 ວິນາທີໃນ SPARC ຂອງຂ້ອຍ). A ປະໂຫຍດເພີ່ມເຕີມຂອງການນີ້ແມ່ນວ່າສໍາລັບ
ການດໍາເນີນງານງ່າຍດາຍ (ເຊັ່ນ "$x += 2") ຫນຶ່ງສາມາດ manipulate array ທັງຫມົດໂດຍບໍ່ມີການເປັນຫ່ວງເປັນໄຍກ່ຽວກັບ.
ຂະຫນາດຂອງມັນ.

ຂ້ອຍພົບວ່າເມື່ອໃຊ້ perlDL ມັນເປັນປະໂຫຍດທີ່ສຸດທີ່ຈະຄິດເຖິງຕົວແປ Perl @x ມາດຕະຖານ
"ລາຍຊື່" ຂອງ "ສິ່ງ" ທົ່ວໄປແລະຕົວແປ PDL ເຊັ່ນ $x ເປັນ "ອາເຣ" ເຊິ່ງສາມາດບັນຈຸໄດ້.
ໃນລາຍການຫຼື hashes. ຂ້ອນຂ້າງເລື້ອຍໆໃນສະຄິບ perlDL ຂອງຂ້ອຍຂ້ອຍມີ @x ມີບັນຊີລາຍຊື່ຂອງ spectra,
ຫຼືບັນຊີລາຍຊື່ຂອງຮູບພາບ (ຫຼືແມ້ກະທັ້ງປະສົມ!). ຫຼືບາງທີອາດມີ hash (ເຊັ່ນ %x) ຂອງ
ຮູບພາບ ... ຈໍາກັດພຽງແຕ່ແມ່ນຄວາມຊົງຈໍາ!

ຕົວແປ perlDL ສະຫນັບສະຫນູນຂອບເຂດຂອງປະເພດຂໍ້ມູນ - arrays ສາມາດເປັນ bytes, integers ສັ້ນ
(ເຊັນ ຫຼື ບໍ່ເຊັນ), ຈໍານວນເຕັມຍາວ, ເລື່ອນ ຫຼື ເລື່ອນຄວາມແມ່ນຍໍາສອງເທົ່າ.

ການນໍາໃຊ້
PerlDL ຖືກໂຫລດເຂົ້າໄປໃນສະຄິບ Perl ຂອງທ່ານໂດຍໃຊ້ຄໍາສັ່ງນີ້:

ໃຊ້ PDL; # ໃນ Perl scripts: ໃຊ້ໂມດູນ perlDL ມາດຕະຖານ

ຍັງມີຫຼາຍໂມດູນການຂະຫຍາຍ, ເຊັ່ນ: PDL::Graphics::TriD. ສ່ວນໃຫຍ່ເຫຼົ່ານີ້ (ແຕ່
ບໍ່ແມ່ນທັງໝົດເພາະບາງຄັ້ງມັນບໍ່ເໝາະສົມ) ປະຕິບັດຕາມສົນທິສັນຍາມາດຕະຖານ. ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ເວົ້າ​ວ່າ:

ໃຊ້ PDL::Graphics::TriD;

ທ່ານນໍາເຂົ້າທຸກສິ່ງທຸກຢ່າງໃນບັນຊີລາຍຊື່ມາດຕະຖານຈາກໂມດູນ. ບາງຄັ້ງທ່ານອາດຈະຕ້ອງການ
ນໍາເຂົ້າບໍ່ມີຫຍັງ (ເຊັ່ນ: ຖ້າທ່ານຕ້ອງການໃຊ້ syntax OO ຕະຫຼອດເວລາແລະປະຫຍັດພາສີນໍາເຂົ້າ).
ສໍາລັບການເຫຼົ່ານີ້, ທ່ານເວົ້າວ່າ:

ໃຊ້ PDL::Graphics::TriD qw();

ແລະວົງຢືມ "qw()" ຫວ່າງເປົ່າຖືກຮັບຮູ້ວ່າຫມາຍຄວາມວ່າ 'ບໍ່ມີຫຍັງ'. ນອກນັ້ນທ່ານຍັງສາມາດກໍານົດ a
ບັນຊີລາຍຊື່ຂອງຫນ້າທີ່ນໍາເຂົ້າໃນວິທີການ Perl ປົກກະຕິ.

ນອກຈາກນີ້ຍັງມີແກະແບບໂຕ້ຕອບ, "perldl" ຫຼື "pdl2", ເບິ່ງ perdl ຫຼື pdl2 ສໍາລັບລາຍລະອຽດ.

To ສ້າງ a ໃຫມ່ PDL ຕົວແປ
ນີ້ແມ່ນບາງວິທີໃນການສ້າງຕົວແປ PDL:

$a = pdl [1..10]; # 1D array
$a = pdl(1,2,3,4); # ດີໂຕ
$a = pdl '[1 2 3 4]'; # ດີໂຕ
$b = pdl [[1,2,3],[4,5,6]]; # 2D 3x2 array
$b = pdl '[1 2 3; 4 5 6]'; # ດີໂຕ
$b = pdl q[1,2,3; 4,5,6]; # ດີໂຕ
$b = pdl <
[1 2 3]
[4 5 6]
NEWPDL
$c = pdl q[1 -2]; # piddle 2 ອົງປະກອບທີ່ມີ 1 ແລະ -2
$c = pdl q[1 − 2]; # piddle 2 ອົງປະກອບທີ່ມີ 1 ແລະ -2
$b = pdl 42 # 0-dimensional scalar
$c = pdl $a; #ເຮັດສຳເນົາໃໝ່

$d = byte [1..10]; # ເບິ່ງ "ການແປງປະເພດ"
$e = zeroes(3,2,4); # 3x2x4 array ເຕັມສູນ

$c = rfits $file; # ອ່ານໄຟລ໌ FITS

@x = ( pdl(42), zeroes(3,2,4), rfits($file) ); # ແມ່ນບັນຊີລາຍຊື່ຂອງຕົວແປ PDL!

ໄດ້ pdl() function ແມ່ນໃຊ້ເພື່ອເລີ່ມຕົ້ນຕົວແປ PDL ຈາກ scalar, list, list
ການອ້າງອີງ, ຕົວແປ PDL ອື່ນ, ຫຼືສະຕຣິງທີ່ມີຮູບແບບທີ່ຖືກຕ້ອງ.

ນອກຈາກນັ້ນ, ຟັງຊັນ PDL ທັງຫມົດຈະປ່ຽນສະເກັດເງິນ Perl ປົກກະຕິໄປສູ່ຕົວແປ PDL ໂດຍອັດຕະໂນມັດ
ກ່ຽວກັບການບິນ.

(ເບິ່ງ "ການ​ປ່ຽນ​ແປງ​ປະ​ເພດ​" ແລະ "ການ​ປ້ອນ​ຂໍ້​ມູນ / ຜົນ​ໄດ້​ຮັບ​" ພາກ​ສ່ວນ​ຂ້າງ​ລຸ່ມ​ນີ້​)

ເລກຄະນິດສາດ (ແລະ ປຸ້ຍ ການສະແດງອອກ)
$a = $b + 2; $a++; $a = $b / $c; # ອື່ນໆ.

$c=sqrt($a); $d = log10($b+100); # ອື່ນໆ

$e = $a>42; # ເງື່ອນໄຂ vector

$e = 42*($a>42) + $a*($a<=42); #ໝວກ

$b = $a->log10 ເວັ້ນເສຍແຕ່ວ່າມີ ($a <= 0); # ຫຼີກເວັ້ນຄວາມຜິດພາດຈຸດລອຍ

$a = $a / ( max($a) - min($a) );

$f = where($a, $a > 10); # ບ່ອນທີ່ສົ່ງຄືນ piddle ຂອງອົງປະກອບສໍາລັບ
#ເຊິ່ງເງື່ອນໄຂເປັນຄວາມຈິງ

ພິມ $a; # $a ໃນ string context ພິມມັນໃນຮູບແບບ N-dimensional

(ແລະຕົວປະຕິບັດການ Perl ອື່ນໆ)

ເມື່ອໃຊ້ piddles ໃນການສະແດງອອກທີ່ມີເງື່ອນໄຂ (ເຊັ່ນ "ຖ້າ", "ເວັ້ນເສຍແຕ່" ແລະ "ໃນຂະນະທີ່" ກໍ່ສ້າງ)
ອະນຸຍາດໃຫ້ມີພຽງ piddles ທີ່ມີອົງປະກອບອັນດຽວເທົ່ານັ້ນ, ຕົວຢ່າງ

$a = pdl (1,0,0,1);
ພິມ "ຖືກຕັ້ງ" ຖ້າ $a->ດັດຊະນີ(2)

ໃຫ້ສັງເກດວ່າຕົວປະຕິບັດການ boolean ກັບຄືນມາໃນ piddles ຫຼາຍອົງປະກອບທົ່ວໄປ. ເພາະສະນັ້ນ, ໄດ້
ຕໍ່ໄປນີ້ຈະເຮັດໃຫ້ເກີດຄວາມຜິດພາດຂຶ້ນ

ພິມ "ແມ່ນແລ້ວ" ຖ້າ $a > 3;

ເນື່ອງຈາກ "$a > 3" ເປັນ piddle ທີ່ມີ 4 ອົງປະກອບ. ແທນທີ່ຈະໃຊ້ທັງໝົດ ຫຼືອັນໃດອັນໜຶ່ງເພື່ອທົດສອບວ່າທັງໝົດ ຫຼືອັນໃດອັນໜຶ່ງ
ອົງ​ປະ​ກອບ​ສໍາ​ເລັດ​ເງື່ອນ​ໄຂ​:

ພິມ "ບາງອັນແມ່ນ > 3" ຖ້າມີ $a>3;
ພິມ "ບໍ່ສາມາດເອົາ logarithm" ເວັ້ນເສຍແຕ່ທັງຫມົດ $a>0;

ຍັງມີຫຼາຍຫນ້າທີ່ກໍານົດໄວ້ລ່ວງຫນ້າ, ເຊິ່ງໄດ້ອະທິບາຍຢູ່ໃນຫນ້າຜູ້ຊາຍອື່ນໆ. ກວດສອບ
PDL::ດັດຊະນີ.

ມາຕຣິກເບື້ອງ ຫນ້າທີ່
'x' ຖືກ hijacked ເປັນຕົວປະຕິບັດການຄູນ matrix. ຕົວຢ່າງ "$c = $ax $b";

perlDL ແມ່ນແຖວຕົ້ນຕໍບໍ່ແມ່ນຄໍລໍາທີ່ສໍາຄັນດັ່ງນັ້ນນີ້ແມ່ນ "c(i,j) = sum_k a(k,j) b(i,k)" -
ແຕ່ເມື່ອ matrices ຖືກພິມອອກຜົນໄດ້ຮັບຈະເບິ່ງຖືກຕ້ອງ. ພຽງແຕ່ຈື່ໄວ້ວ່າຕົວຊີ້ວັດແມ່ນ
ປີ້ນກັບກັນ. ຕົວຢ່າງ:

$a = [ $b = [
[ 1 2 3 0 ] [1 1]
[ 1 -1 2 7 ] [0 2]
[ 1 0 0 1 ] [0 2]
] [1 1]
]

ໃຫ້ $c = [
[ 1 11 ]
[ 8 10 ]
[ 2 2 ]
]

ຫມາຍ​ເຫດ​: transpose() ເຮັດສິ່ງທີ່ມັນເວົ້າແລະເປັນວິທີທີ່ສະດວກທີ່ຈະປ່ຽນ vectors ແຖວເປັນ
ຖັນ vectors.

ວິທີການ to ຂຽນ a ງ່າຍດາຍ ຫນ້າທີ່
ຜະລິດຕະພັນຍ່ອຍ {
ຂອງຂ້ອຍ ($a,$b) = @_;
ຜົນບວກ($a*$b);
}
1;

ຖ້າໃສ່ໃນໄຟລ໌ dotproduct.pdl ຈະຖືກໂຫລດອັດຕະໂນມັດຖ້າທ່ານໃຊ້ PDL::AutoLoader (ເບິ່ງ.
ດ້ານລຸ່ມ).

ແນ່ນອນ, ຟັງຊັນນີ້ມີຢູ່ແລ້ວເປັນຫນ້າທີ່ພາຍໃນ, ເບິ່ງ PDL::Primitive.

ປະເພດ ການປ່ຽນແປງ
ຄ່າເລີ່ມຕົ້ນສໍາລັບ pdl() ແມ່ນສອງເທົ່າ. ການປ່ຽນແປງແມ່ນ:

$a = float($b);
$c = long($d); # "ຍາວ" ໂດຍທົ່ວໄປແມ່ນ 4 byte int
$d = byte($a);

ນອກຈາກນີ້ຍັງ ສອງ(), ສັ້ນ(), ຫຍໍ້ໆ(), ດັດຊະນີ().

ຫມາຍເຫດ: indx() routine ແມ່ນປະເພດຈໍານວນເຕັມພິເສດທີ່
ແມ່ນຂະຫນາດທີ່ຖືກຕ້ອງສໍາລັບຄ່າດັດຊະນີ PDL (ຂະຫນາດຂະຫນາດ,
index, ຫຼື offest) ເຊິ່ງສາມາດເປັນ 32bit (ຍາວ) ຫຼື
64bit (longlong) ປະລິມານຂຶ້ນກັບວ່າ perl
ຖືກສ້າງຂຶ້ນດ້ວຍການສະຫນັບສະຫນູນ 32bit ຫຼື 64bit.

ປົກກະຕິເຫຼົ່ານີ້ຍັງປ່ຽນລາຍຊື່ Perl ໂດຍອັດຕະໂນມັດເພື່ອອະນຸຍາດໃຫ້ໃຊ້ shorthand ສະດວກ:

$a = byte [[1..10],[1..10]]; # ສ້າງ array 2D byte
$a = float [1..1000]; # ສ້າງ 1D float array

ແລະອື່ນໆ

ການພິມ
ຂະຫຍາຍ array ໂດຍອັດຕະໂນມັດໃນຮູບແບບ N-dimensional:

ພິມ $a;

$b = "ຄໍາຕອບແມ່ນ = $a";

Sections
PDL ມີ slicing multidimensional ມີອໍານາດຫຼາຍແລະປະຕິບັດການພາກສ່ວນ; ເບິ່ງ
PDL::ແຜ່ນນ້ອຍໆ(3) ຫນ້າຜູ້ຊາຍສໍາລັບລາຍລະອຽດ; ພວກເຮົາຈະອະທິບາຍສິ່ງທີ່ສໍາຄັນທີ່ສຸດຢູ່ທີ່ນີ້.

PDL ສະແດງໃຫ້ເຫັນມໍລະດົກ Perl/C ຂອງມັນຢູ່ໃນອາເຣນັ້ນແມ່ນສູນຊົດເຊີຍ. ດັ່ງນັ້ນຈຶ່ງມີຮູບພາບ 100x100
ດັດຊະນີ "0..99,0..99". (ສົນທິສັນຍາ​ແມ່ນ​ວ່າ ສູນ ຂອງ pixels (0,0) ແມ່ນຢູ່ໃນຈຸດປະສານງານ
(0.0,0.0). ຟັງຊັນກາຟິກ PDL ທັງໝົດສອດຄ່ອງກັບຄຳນິຍາມນີ້ ແລະເຊື່ອງໜ່ວຍນັ້ນອອກໄປ
ການຊົດເຊີຍຂອງ, ສໍາລັບການຍົກຕົວຢ່າງ, ຫ້ອງສະຫມຸດ PGPLOT FORTRAN.

ປະ​ຕິ​ບັດ​ຕາມ​ປະ​ສານ​ງານ​ສົນ​ທິ​ສັນ​ຍາ​ປົກ​ກະ​ຕິ (0,0​) ສະ​ແດງ​ຢູ່​ທາງ​ລຸ່ມ​ຊ້າຍ​ໃນ​ເວ​ລາ​ທີ່​
ການ​ສະ​ແດງ​ຮູບ​ພາບ​. ມັນປາກົດຢູ່ເບື້ອງຊ້າຍເທິງເມື່ອໃຊ້ ""ພິມ $a" ແລະອື່ນໆ.

ພາກສ່ວນທີ່ງ່າຍດາຍໃຊ້ການຂະຫຍາຍ syntax ກັບ Perl, PDL::NiceSlice, ທີ່ຊ່ວຍໃຫ້ທ່ານສາມາດ
ລະບຸໄລຍະຍ່ອຍຜ່ານຕົວແກ້ໄຂ null-method ເປັນ PDL:

$b = $a->($x1:$x2,$y1:$y2,($z1)); # ເອົາສ່ວນຍ່ອຍ

ທີ່ນີ້, $a ແມ່ນຕົວແປ 3 ມິຕິລະດັບ, ແລະ $b ໄດ້ຮັບ cutout ແຜນທີ່ຖືກກໍານົດໂດຍ
ຈຳກັດ $x1, $x2, $y1, $y2, ຢູ່ສະຖານທີ່ $z1. ວົງເລັບປະມານ $z1 ເຮັດໃຫ້ເກີດ
ດັດຊະນີເລັກນ້ອຍທີ່ຈະຖືກຍົກເວັ້ນ - ຖ້າບໍ່ດັ່ງນັ້ນ $b ຈະເປັນສາມມິຕິລະດັບກັບສາມ
ຂະຫນາດຂອງຄໍາສັ່ງ 1.

ທ່ານສາມາດວາງ PDL ທັງສອງຂ້າງຂອງຕົວປະຕິບັດການມອບຫມາຍອົງປະກອບທີ່ສະຫລາດ ".=", ເຊັ່ນ
ດັ່ງນັ້ນ:

# ຕັ້ງສ່ວນຂອງ $bigimage ເປັນຄ່າຈາກ $smallimage
$bigimage->($xa:$xb,$ya:$yb).= $smallimage;

ບາງ​ສ່ວນ​ອື່ນໆ​:

$c = nelem($a); # ຈຳນວນ pixels

$val = at($object, $x,$y,$z...) # ຄ່າ pixels ລວງຢູ່ຕຳແໜ່ງ, ເປັນ Perl scalar
$val = $object->at($x,$y,$z...) # ທຽບເທົ່າ (ວິທີ syntax OK)

$b = xvals($a); # ຕື່ມຂໍ້ມູນໃສ່ອາເຣດ້ວຍຄ່າ X-coord (ຍັງ yvals(), zvals(),
# axisvals($x,$axis) ແລະ rvals() ສໍາລັບໄລຍະຫ່າງ radial
# ຈາກ​ສູນ​ກາງ​)​.

Input / Output
ໂມດູນ "PDL::IO" ປະຕິບັດຫນ້າທີ່ຮູບແບບ IO ທີ່ເປັນປະໂຫຍດຫຼາຍອັນ. ມັນຈະຫຼາຍເກີນໄປ
ເພື່ອໃຫ້ຕົວຢ່າງຂອງແຕ່ລະຄົນ, ແຕ່ເຈົ້າສາມາດຊອກຫາພາບລວມທີ່ດີໄດ້ທີ່ PDL::IO. ນີ້ແມ່ນຕົວຢ່າງຂອງ
ບາງຮູບແບບ IO ທີ່ຮອງຮັບໃນ PDL.

PDL::IO::ອື່ນໆ
Ascii, FITS ແລະ FIGARO/NDF IO routines.

PDL::IO::FastRaw
ການ​ນໍາ​ໃຊ້​ປະ​ເພດ​ຂໍ້​ມູນ​ວັດ​ຖຸ​ດິບ​ຂອງ​ເຄື່ອງ​ຂອງ​ທ່ານ​, ເປັນ IO ທີ່​ບໍ່​ສາ​ມາດ​ນໍາ​ໃຊ້​ແຕ່​ໄວ​ຕາ​ບອດ​ໄດ້​
ຮູບແບບ. ນອກຈາກນີ້ຍັງສະຫນັບສະຫນູນການສ້າງແຜນທີ່ຫນ່ວຍຄວາມຈໍາເພື່ອເກັບຮັກສາຄວາມຊົງຈໍາເຊັ່ນດຽວກັນກັບໄດ້ຮັບຄວາມໄວຫຼາຍຂຶ້ນ.

PDL::IO::FlexRaw
ຮູບແບບຂໍ້ມູນດິບທົ່ວໄປ. ເຊັ່ນດຽວກັນກັບ FastRaw, ພຽງແຕ່ດີກວ່າ.

PDL::IO::Browser
ຕົວທ່ອງເວັບ Curses ສໍາລັບ arrays.

PDL::IO::Pnm
Portaple bitmap ແລະສະຫນັບສະຫນູນ pixmap.

PDL::IO::ຮູບ
ການນໍາໃຊ້ໂມດູນທີ່ຜ່ານມາແລະ netpbm, ເຮັດໃຫ້ມັນເປັນໄປໄດ້ທີ່ຈະຂຽນ GIF, jpeg ໄດ້ຢ່າງງ່າຍດາຍ
ແລະອັນໃດກໍ່ຕາມທີ່ມີຄໍາສັ່ງງ່າຍໆ.

ຮູບພາບ
ປັດຊະຍາທີ່ຢູ່ເບື້ອງຫຼັງ perlDL ແມ່ນເພື່ອເຮັດໃຫ້ມັນເຮັດວຽກກັບຄວາມຫລາກຫລາຍຂອງກາຟິກທີ່ມີຢູ່
ຫ້ອງສະຫມຸດນັບຕັ້ງແຕ່ບໍ່ມີຊຸດດຽວຈະຕອບສະຫນອງຄວາມຕ້ອງການທັງຫມົດແລະປະຊາຊົນທັງຫມົດແລະນີ້ອະນຸຍາດໃຫ້
ຫນຶ່ງທີ່ຈະເຮັດວຽກກັບຊຸດຫນຶ່ງຮູ້ແລະມັກ. ແນ່ນອນຈະມີບາງອັນ
ການຊ້ອນກັນໃນການເຮັດວຽກແລະບາງການຂາດຄວາມສອດຄ່ອງແລະຄວາມເປັນເອກະພາບ. ຢ່າງໃດກໍຕາມ, ນີ້ອະນຸຍາດໃຫ້
PDL ເພື່ອຮັກສາພາກສະຫນາມທີ່ມີການພັດທະນາຢ່າງໄວວາ - ໂມດູນ PDL ຫຼ້າສຸດສະຫນອງການໂຕ້ຕອບ
ກັບ OpenGL ແລະກຣາບຟິກ VRML!

PDL::ກາຟິກ::PGPLOT
PGPLOT ສະຫນອງຫ້ອງສະຫມຸດແບບງ່າຍດາຍສໍາລັບຮູບພາບເສັ້ນແລະການສະແດງຮູບພາບ.

ມີການໂຕ້ຕອບທີ່ງ່າຍຕໍ່ເລື່ອງນີ້ຢູ່ໃນໂມດູນພາຍໃນ PDL::Graphics::PGPLOT, ເຊິ່ງ
ໂທຫາປົກກະຕິໃນໂມດູນລະດັບສູງສຸດຂອງ PGPLOT ທີ່ແຍກຕ່າງຫາກ.

PDL::Graphics::PLplot
PLplot ສະຫນອງຫ້ອງສະຫມຸດງ່າຍດາຍສໍາລັບການສ້າງຮູບພາບທີ່ມີໄດເວີຜົນຜະລິດຫຼາຍ,
ລວມທັງຄົນຂັບໂດຍກົງຫາ piddle.

ໂມດູນນີ້ສະຫນອງການທໍາງານທັງສອງລະດັບສູງແລະລະດັບຕ່ໍາທີ່ສ້າງຂຶ້ນໃນ PLplot. ໄດ້
ຄໍາສັ່ງລະດັບຕ່ໍາແມ່ນການຜູກມັດໂດຍກົງກັບການໂຕ້ຕອບ C ຂອງ PLplot. ອ່ານ​ຕື່ມ
ທີ່ PDL::Graphics::PLplot.

PDL::ກາຟິກ::IIS
ນັກດາລາສາດຫຼາຍຄົນມັກໃຊ້ SAOimage ແລະ Ximtool (ຫຼືມີ derivations / clones). ເຫຼົ່ານີ້
ແມ່ນ widget ຟຣີທີ່ເປັນປະໂຫຍດສໍາລັບການກວດກາແລະການເບິ່ງເຫັນຮູບພາບ. (ພວກ​ເຂົ້າ​ບໍ່​ແມ່ນ
ສະຫນອງໃຫ້ກັບ perlDL ແຕ່ສາມາດໄດ້ຮັບໄດ້ຢ່າງງ່າຍດາຍຈາກເວັບໄຊທ໌ທາງການຂອງເຂົາເຈົ້າອອກຈາກ
ສຸດທິ)

PDL::ກາຟິກ::ຊຸດ IIS ສະໜອງໃຫ້ອັນໜຶ່ງເພື່ອສະແດງຮູບພາບໃນສິ່ງເຫຼົ່ານີ້ ("IIS"
ແມ່ນຊື່ຂອງວັດຖຸບູຮານຂອງຮາດແວສະແດງຮູບພາບທີ່ມີໂປໂຕຄອນເຄື່ອງມືເຫຼົ່ານີ້
ສອດ​ຄ່ອງ​ກັບ​.)

PDL::Graphics::TriD
ເບິ່ງ PDL::ກຣາບຟິກ::TriD, ນີ້ແມ່ນຄໍເລັກຊັນຂອງ 3D routines ສໍາລັບ OpenGL ແລະ (ໄວໆນີ້)
VRML ແລະ​ຮູບ​ແບບ 3D ອື່ນໆ​ທີ່​ອະ​ນຸ​ຍາດ​ໃຫ້ 3D ຈຸດ​, ເສັ້ນ​, ແລະ​ຮູບ​ແບບ​ຫນ້າ​ດິນ​ຈາກ PDL​.

ການໂຫຼດອັດຕະໂນມັດ
ເບິ່ງ PDL::AutoLoader. ນີ້ອະນຸຍາດໃຫ້ຫນຶ່ງສາມາດ autoload ຫນ້າທີ່ຕາມຄວາມຕ້ອງການ, ໃນບາງທີອາດມີ
ຄຸ້ນເຄີຍກັບຜູ້ໃຊ້ MatLab.

ຫນຶ່ງຍັງສາມາດຂຽນການຂະຫຍາຍ PDL ເປັນໂມດູນ Perl ປົກກະຕິ.

PDL shells
Perl script "pdl2" (ຫຼື "perldl") ສະຫນອງການໂຕ້ຕອບເສັ້ນຄໍາສັ່ງງ່າຍດາຍກັບ PDL. ຖ້າ
ໂມດູນ Readlines/ReadKey ຫຼ້າສຸດໄດ້ຖືກຕິດຕັ້ງ "pdl2" ກວດພົບນີ້ແລະເປີດໃຊ້
ການເອີ້ນຄືນ ແລະແກ້ໄຂເສັ້ນຄຳສັ່ງ. ເບິ່ງຫນ້າຜູ້ຊາຍສໍາລັບລາຍລະອຽດ.

ຕົວຢ່າງ:

% perdl
perlDL shell v1.354
PDL ມາພ້ອມກັບການຮັບປະກັນຢ່າງແທ້ຈິງ. ສໍາລັບລາຍລະອຽດ, ເບິ່ງໄຟລ໌
'ການສຳເນົາ' ໃນການແຈກຢາຍ PDL. ນີ້ແມ່ນຊອບແວຟຣີແລະທ່ານ
ຍິນດີຕ້ອນຮັບການແຈກຢາຍມັນພາຍໃຕ້ເງື່ອນໄຂສະເພາະໃດຫນຶ່ງ, ເບິ່ງ
ໄຟລ໌ດຽວກັນສໍາລັບລາຍລະອຽດ.
ເປີດໃຊ້ ReadLines, NiceSlice, MultiLines ແລ້ວ
ກຳລັງອ່ານ PDL/default.perldlrc...
ພົບຖານຂໍ້ມູນ docs /home/pdl/dev/lib/perl5/site_perl/PDL/pdldoc.db
ພິມ 'help' ສໍາລັບການຊ່ວຍເຫຼືອອອນໄລນ໌
ພິມ 'demo' ສໍາລັບການສາທິດອອນໄລນ໌
ໂຫລດ PDL v2.4.9_003 (ຮອງຮັບຄ່າທີ່ບໍ່ດີ)
pdl> $x = rfits 'm51.fits'
ກຳລັງອ່ານຂໍ້ມູນ IMAGE...
BITPIX = 32 ຂະໜາດ = 147456 ພິກເຊລ
ກຳລັງອ່ານ 589824 bytes
BSCALE = && BZERO =

pdl> ໃຊ້ PDL::Graphics::PGPLOT;
pdl> ຮູບພາບ $x
ສະແດງຮູບພາບ 384 x 384 ຈາກ 40 ຫາ 761, ໃຊ້ 84 ສີ (16-99)...

ນອກນັ້ນທ່ານຍັງສາມາດດໍາເນີນການໄດ້ຈາກ Perl debugger ("perl -MPDL -d -e 1") ຖ້າທ່ານຕ້ອງການ.

ຄຸນ​ນະ​ສົມ​ບັດ​ຂອງ​ແກະ​ອື່ນໆ​:

p ແກະ aliases "p" ເປັນຮູບແບບສັ້ນສະດວກຂອງ "ພິມ", eg

pdl > p ones 5,3
[
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
]

ການລິເລີ່ມ
ໄຟລ​໌ "~/.perldlrc" ແລະ "local.perldlrc" (ໃນໄດເລກະທໍລີປະຈຸບັນ) ແມ່ນມາຈາກ if
ພົບ. ນີ້ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ມີລະຫັດ PDL ທົ່ວໂລກແລະທ້ອງຖິ່ນສໍາລັບການເລີ່ມຕົ້ນ.

ຊ່ວຍເຫຼືອ
ພິມ 'ຊ່ວຍ'! ຫນຶ່ງສາມາດຄົ້ນຫາເອກະສານ PDL, ແລະຊອກຫາເອກະສານໃດໆ
function

Escape
ແຖວໃດກໍໄດ້ທີ່ເລີ່ມຕົ້ນດ້ວຍຕົວອັກສອນ "#" ແມ່ນຖືວ່າເປັນການຫລົບໜີຈາກແກະ. ລັກສະນະນີ້
ສາມາດຕັ້ງຄ່າໄດ້ໂດຍການຕັ້ງຄ່າຕົວແປ Perl $PERLDL_ESCAPE. ນີ້ສາມາດ, ສໍາລັບການຍົກຕົວຢ່າງ,
ຖືກຕັ້ງຢູ່ໃນ "~/.perldlrc".

overload ຜູ້ປະກອບການ
ຕົວປະຕິບັດການ Perl ແລະຫນ້າທີ່ສ້າງຕໍ່ໄປນີ້ໄດ້ຖືກໂຫຼດເກີນເພື່ອເຮັດວຽກຢູ່ໃນ PDL
ຕົວແປ:

+-* / > < >= <= << >> & | ^ == != <=> ** % ! ~
sin log abs atan2 sqrt cos exp

[ທຸກຫນ້າທີ່ unary (ບາບແລະອື່ນໆ) ອາດຈະຖືກນໍາໃຊ້ກັບ ໃນ​ສະ​ຖານ​ທີ່() - ເບິ່ງ "ຄວາມ​ຊົງ​ຈໍາ​" ຂ້າງ​ລຸ່ມ​ນີ້​.]

Object-Orientation ແລະ perlDL
ການດໍາເນີນງານ PDL ແມ່ນມີຢູ່ໃນຫນ້າທີ່ແລະວິທີການ. ດັ່ງນັ້ນ, ຫນຶ່ງສາມາດໄດ້ຮັບປະເພດໃຫມ່ຂອງ
object, ເພື່ອເປັນຕົວແທນຂອງຊັ້ນຂໍ້ມູນແບບກຳນົດເອງ.

ໂດຍການນໍາໃຊ້ overloading ຫນຶ່ງສາມາດເຮັດໃຫ້ຕົວປະຕິບັດການຄະນິດສາດເຮັດອັນໃດກໍໄດ້ທີ່ທ່ານກະລຸນາ, ແລະ PDL
ມີບາງ tricks ໃນຕົວທີ່ອະນຸຍາດໃຫ້ຫນ້າທີ່ PDL ທີ່ມີຢູ່ແລ້ວເຮັດວຽກບໍ່ປ່ຽນແປງ, ເຖິງແມ່ນວ່າ
ການເປັນຕົວແທນຂອງຂໍ້ມູນເບື້ອງຕົ້ນມີການປ່ຽນແປງຢ່າງຫຼວງຫຼາຍ! ເບິ່ງ PDL::Objects

ຫນ່ວຍຄວາມຈໍາ ການນໍາໃຊ້ ແລະ ເອກະສານ
ການເສີຍໆກັບອາເຣຂໍ້ມູນຂະໜາດໃຫຍ່ແທ້ໆອາດຕ້ອງການການດູແລບາງຢ່າງ. perlDL ສະຫນອງຈໍານວນຫຼາຍ
ສິ່ງອໍານວຍຄວາມສະດວກເພື່ອໃຫ້ທ່ານປະຕິບັດການດໍາເນີນງານໃນ arrays ໃຫຍ່ໂດຍບໍ່ມີການສ້າງສໍາເນົາເພີ່ມເຕີມ
ເຖິງແມ່ນວ່ານີ້ຕ້ອງການຄວາມຄິດແລະການດູແລເລັກນ້ອຍຫຼາຍຈາກຜູ້ຂຽນໂປລແກລມ.

ຫມາຍ​ເຫດ​: ໃນ​ບາງ​ລະ​ບົບ​ຫຼາຍ​ທີ່​ສຸດ​ມັນ​ເປັນ​ການ​ດີກ​ວ່າ​ການ​ຕັ້ງ​ຄ່າ Perl (ໃນ​ລະ​ຫວ່າງ​ການ​ສ້າງ​ທາງ​ເລືອກ​) ກັບ​
ໃຊ້ລະບົບ "malloc()" ແທນທີ່ຈະເປັນຕົວສ້າງຂອງ Perl. ນີ້ແມ່ນຍ້ອນວ່າ Perl's
ຫນຶ່ງແມ່ນ optimized ສໍາລັບຄວາມໄວແທນທີ່ຈະບໍລິໂພກຂອງຫນ່ວຍຄວາມຈໍາ virtual - ນີ້ສາມາດສົ່ງຜົນໃຫ້
ປັດ​ໄຈ​ຂອງ​ການ​ປັບ​ປຸງ​ສອງ​ປະ​ລິ​ມານ​ການ​ເກັບ​ຮັກ​ສາ​ຄວາມ​ຊົງ​ຈໍາ​ທີ່​ທ່ານ​ສາ​ມາດ​ນໍາ​ໃຊ້​ໄດ້​. The Perl malloc
ໃນ 5.004 ແລະຕໍ່ມາມີຈໍານວນຕົວເລືອກເວລາລວບລວມທີ່ທ່ານສາມາດນໍາໃຊ້ເພື່ອປບັ
ພຶດຕິ ກຳ.

ເລກຄະນິດສາດແບບງ່າຍດາຍ
ຖ້າ $a ເປັນຮູບພາບໃຫຍ່ (ເຊັ່ນ: ຄອບຄອງ 10MB) ຫຼັງຈາກນັ້ນຄໍາສັ່ງ

$a = $a + 1;

ກິນຄວາມຈຳອີກ 10MB. ນີ້ແມ່ນຍ້ອນວ່າການສະແດງອອກ "$a+1" ສ້າງ a
ສໍາເນົາຊົ່ວຄາວຂອງ $a ເພື່ອຖືຜົນໄດ້ຮັບ, ຫຼັງຈາກນັ້ນ $a ໄດ້ຖືກມອບຫມາຍການອ້າງອີງເຖິງສິ່ງນັ້ນ.
ຫຼັງຈາກນີ້, $a ຕົ້ນສະບັບຖືກທໍາລາຍດັ່ງນັ້ນບໍ່ມີ ຖາວອນ ສິ່ງເສດເຫຼືອຄວາມຊົງຈໍາ. ແຕ່ສຸດ
ເຄື່ອງຈັກຂະຫນາດນ້ອຍ, ການຂະຫຍາຍຕົວໃນຄວາມຊົງຈໍາ footprint ສາມາດພິຈາລະນາ. ມັນ​ແມ່ນ
ແນ່ນອນເຮັດແບບນີ້ເພື່ອໃຫ້ "$c=$a+1" ເຮັດວຽກຕາມທີ່ຄາດໄວ້.

ນອກຈາກນີ້ຖ້າຄົນຫນຶ່ງເວົ້າວ່າ:

$b = $a; # $b ແລະ $a ໃນປັດຈຸບັນຊີ້ໃຫ້ເຫັນຂໍ້ມູນດຽວກັນ
$a = $a + 1;

ຫຼັງຈາກນັ້ນ, $b ແລະ $a ຈົບລົງແມ່ນແຕກຕ່າງກັນ, ດັ່ງທີ່ຄົນເຮົາຄາດຫວັງໄວ້ຢ່າງໄຮ້ເຫດຜົນ, ເພາະວ່າການອ້າງອີງໃໝ່
ຖືກສ້າງຂື້ນແລະ $a ຖືກມອບຫມາຍໃຫ້ມັນ.

ຢ່າງໃດກໍຕາມ, ຖ້າ $a ເປັນຫນ່ວຍຄວາມຈໍາຂະຫນາດໃຫຍ່ (ເຊັ່ນ: ປະລິມານ 3D) ການສ້າງສໍາເນົາຂອງມັນອາດຈະບໍ່
ເປັນສິ່ງທີ່ດີ. ຄົນເຮົາສາມາດຫຼີກລ່ຽງຄວາມຊົງຈໍານີ້ຢູ່ໃນຕົວຢ່າງຂ້າງເທິງໂດຍການເວົ້າວ່າ:

$a++;

ການດໍາເນີນງານ "++,+=,--,-=", ແລະອື່ນໆ. ທັງຫມົດເອີ້ນວ່າ "ໃນສະຖານທີ່" ສະບັບພິເສດຂອງ.
ສູດຍ່ອຍເລກເລກ. ນີ້ຫມາຍຄວາມວ່າບໍ່ຈໍາເປັນຕ້ອງມີຫນ່ວຍຄວາມຈໍາຫຼາຍ - ຂໍ້ເສຍຂອງມັນແມ່ນ
ວ່າ ຖ້າ "$b=$a" ແລ້ວ $b ກໍ່ຖືກເພີ່ມຂຶ້ນ. ເພື່ອບັງຄັບສຳເນົາຢ່າງຈະແຈ້ງ:

$b = pdl $a; # ສຳເນົາຕົວຈິງ

ຫຼື, ໃນທາງກົງກັນຂ້າມ, ບາງທີຮູບແບບທີ່ດີກວ່າ:

$b = $a->ສຳເນົາ;

ຫນ້າທີ່
ຫນ້າທີ່ສ່ວນໃຫຍ່, ເຊັ່ນ: "log()", ສົ່ງຜົນໄດ້ຮັບທີ່ເປັນການຫັນປ່ຽນຂອງພວກມັນ
ການໂຕ້ຖຽງ. ນີ້ເຮັດໃຫ້ການປະຕິບັດການຂຽນໂປຼແກຼມທີ່ດີ. ຢ່າງໃດກໍຕາມ, ການດໍາເນີນງານຫຼາຍສາມາດ
ເຮັດ "ໃນສະຖານທີ່" ແລະນີ້ອາດຈະຕ້ອງການໃນເວລາທີ່ arrays ຂະຫນາດໃຫຍ່ຢູ່ໃນການນໍາໃຊ້ແລະຫນ່ວຍຄວາມຈໍາຢູ່ທີ່
ຄ່ານິຍົມ. ສໍາລັບສະຖານະການເຫຼົ່ານີ້ຜູ້ປະກອບການ ໃນ​ສະ​ຖານ​ທີ່() ແມ່ນສະຫນອງໃຫ້ເຊິ່ງປ້ອງກັນ
ສໍາເນົາເພີ່ມເຕີມແລະອະນຸຍາດໃຫ້ມີການດັດແກ້ການໂຕ້ຖຽງ. ຕົວຢ່າງ:

$x = log($array); # $array ບໍ່ໄດ້ຮັບຜົນກະທົບ
log(inplace($bigarray) ); # $bigarray ປ່ຽນຢູ່ໃນສະຖານະການ

ຄຳ ເຕືອນ:

1. ຄໍາເຕືອນປົກກະຕິກ່ຽວກັບການອ້າງອິງຊໍ້າກັນຖືກນໍາໃຊ້.

2. ແນ່ນອນເມື່ອໃຊ້ກັບບາງຟັງຊັນທີ່ບໍ່ສາມາດນຳໃຊ້ໄດ້ໃນສະຖານທີ່ (ຕົວຢ່າງ
"convolve()") ຜົນກະທົບທີ່ບໍ່ຄາດຄິດອາດຈະເກີດຂື້ນ! ພວກເຮົາພະຍາຍາມຊີ້ບອກ "inplace()"-safe
ຫນ້າທີ່ຢູ່ໃນເອກະສານ.

3. ພິມການແປງ, ເຊັ່ນ "float()", ອາດຈະເຮັດໃຫ້ເກີດການຄັດລອກທີ່ເຊື່ອງໄວ້.

ຮັບປະກັນ ຄວາມອຶດອັດ
ຖ້າຫາກວ່າທ່ານໄດ້ຂຽນຫນ້າທີ່ງ່າຍດາຍແລະທ່ານບໍ່ຕ້ອງການໃຫ້ມັນລະເບີດຂຶ້ນໃນໃບຫນ້າຂອງທ່ານຖ້າຫາກວ່າທ່ານ
ຜ່ານມັນເປັນຕົວເລກທີ່ງ່າຍດາຍແທນທີ່ຈະເປັນຕົວແປ PDL. ພຽງແຕ່ໂທຫາຫນ້າທີ່ topdl() ຄັ້ງທໍາອິດ
ເພື່ອເຮັດໃຫ້ມັນປອດໄພ. ຕົວຢ່າງ:

sub myfiddle { ຂອງຂ້ອຍ $pdl = topdl(shift); $pdl->fiddle_foo(...); ... }

"topdl()" ບໍ່ໄດ້ເຮັດສໍາເນົາຖ້າຕົວແປ pdl ຖືກຜ່ານ - ມັນພຽງແຕ່ຜ່ານ -
ເຊິ່ງແນ່ນອນແມ່ນພຶດຕິກໍາທີ່ຕ້ອງການ. ແນ່ນອນ, ປົກກະຕິແມ່ນບໍ່ຈໍາເປັນ
ຫນ້າທີ່ກໍານົດຂອງຜູ້ໃຊ້ທີ່ບໍ່ສົນໃຈພາຍໃນ.

ໃຊ້ PDL::QuickStartp ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net



ລ່າສຸດ Linux ແລະ Windows ໂຄງການອອນໄລນ໌