PDL::QuickStartp - Online di Cloud

Ini adalah perintah PDL::QuickStartp yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


PDL::QuickStart - Pengenalan cepat fitur PDL.

RINGKASAN


Ringkasan singkat fitur PDL utama dan cara menggunakannya.

DESKRIPSI


Pengantar
Perl adalah bahasa scripting yang sangat bagus dan serbaguna, sangat cocok untuk pemula dan
memungkinkan pembuatan prototipe cepat. Namun sampai saat ini tidak mendukung struktur data yang
memungkinkannya melakukan penghitungan angka dengan cepat.

Namun dengan perkembangan Perl v5, Perl mengakuisisi 'Objek'. Sederhananya pengguna
dapat menentukan tipe data khusus mereka sendiri, dan menulis rutinitas khusus untuk memanipulasinya
baik dalam bahasa tingkat rendah (C dan Fortran) atau dalam Perl itu sendiri.

Ini telah dimanfaatkan sepenuhnya oleh pengembang PerlDL. Modul 'PDL' sudah lengkap
Ekstensi Berorientasi Objek ke Perl (walaupun Anda tidak perlu tahu apa itu objek
menggunakannya) yang memungkinkan kumpulan data N-dimensi besar, seperti gambar besar, spektrum, waktu
seri, dll untuk disimpan efisien dan dimanipulasi en massa. Misalnya dengan PDL
modul kita dapat menulis kode Perl "$a = $b + $c", di mana $b dan $c adalah kumpulan data besar (mis.
2048x2048 gambar), dan dapatkan hasilnya hanya dalam sepersekian detik.

Variabel PDL (atau 'piddles' karena mereka kemudian dikenal) mendukung berbagai macam
tipe data dasar - array dapat berupa byte, bilangan bulat pendek (ditandatangani atau tidak), panjang
bilangan bulat, pelampung atau pelampung presisi ganda. Dan karena sifat Berorientasi Objek dari
PDL tipe data baru yang disesuaikan dapat diturunkan darinya.

Selain modul PDL, yang dapat digunakan oleh program Perl biasa, PerlDL hadir dengan
baris perintah Perl shell, disebut 'perldl', yang mendukung pengeditan baris perintah. Di
kombinasi dengan berbagai modul grafis PDL ini memungkinkan data diputar dengan mudah
dengan dan divisualisasikan.

Bantuan
PDL berisi dokumentasi ekstensif, tersedia baik di dalam perldl or pdl2 kerang dan
dari baris perintah, menggunakan program "pdldoc". Untuk informasi lebih lanjut coba salah satu dari:

pdl> tolong bantu
$pdldoc

Salinan HTML dari dokumentasi juga harus tersedia. Untuk menemukan lokasinya, coba
berikut:

pdl> foreach ( peta{"$_/PDL/HtmlDocs"}@INC ) { p "$_\n" if -d $_ }

Perl Jenis data dan bagaimana PDL Meluas mereka
Struktur data Perl fundamental adalah variabel skalar, misalnya $x, yang dapat menampung angka
atau string, daftar atau array skalar, misalnya @x, dan array/hash skalar asosiatif,
misalnya %x.

Perl v5 memperkenalkan struktur dan objek data Perl. Variabel skalar sederhana $x sekarang menjadi
tipe data yang ditentukan pengguna atau objek penuh (sebenarnya memegang referensi (pintar)
"pointer") untuk ini tetapi itu tidak relevan untuk penggunaan perlDL biasa)

Ide dasar di balik perlDL adalah mengizinkan $x untuk menampung seluruh spektrum 1D, atau 2D
gambar, kubus data 3D, dan seterusnya hingga kumpulan data N-dimensi yang besar. Ini bisa jadi
dimanipulasi sekaligus, misalnya "$a = $b + 2" melakukan operasi vektor pada setiap nilai dalam
spektrum/gambar/dll.

Anda mungkin bertanya: "Mengapa tidak menyimpan spektrum sebagai daftar gaya Perl @x sederhana dengan masing-masing
pixel menjadi item daftar?" Dua jawaban kunci untuk ini adalah ingatan dan kecepatan. Karena kita
mengetahui spektrum kami terdiri dari bilangan murni, kami dapat menyimpannya secara kompak dalam satu blok
memori yang sesuai dengan array numerik gaya C. Ini membutuhkan memori BANYAK lebih sedikit daripada
daftar Perl yang setara. Maka mudah untuk meneruskan blok memori ini ke tambahan cepat
rutin, atau fungsi C lainnya yang berhubungan dengan array. Akibatnya perlDL sangat
cepat --- misalnya seseorang dapat mengalikan gambar 2048*2048 dalam waktu yang sama persis
akan menerima C atau FORTRAN (0.1 detik di SPARC saya). Keuntungan lebih lanjut dari ini adalah untuk
operasi sederhana (misalnya "$x += 2") seseorang dapat memanipulasi seluruh array tanpa peduli
dimensinya.

Saya menemukan ketika menggunakan perlDL, paling berguna untuk memikirkan variabel Perl @x standar sebagai
"daftar" generik "hal" dan variabel PDL seperti $x sebagai "array" yang dapat ditampung
dalam daftar atau hash. Cukup sering dalam skrip perlDL saya, saya memiliki @x berisi daftar spektrum,
atau daftar gambar (atau bahkan campuran!). Atau mungkin seseorang dapat memiliki hash (misalnya %x) dari
gambar... satu-satunya batasan adalah memori!

variabel perlDL mendukung berbagai tipe data - array dapat berupa byte, bilangan bulat pendek
(ditandatangani atau tidak), bilangan bulat panjang, float atau float presisi ganda.

penggunaan
PerlDL dimuat ke dalam skrip Perl Anda menggunakan perintah ini:

menggunakan PDL; # dalam skrip Perl: gunakan modul perlDL standar

Ada juga banyak modul ekstensi, misalnya PDL::Graphics::TriD. Sebagian besar dari ini (tetapi
tidak semua karena terkadang tidak sesuai) mengikuti konvensi standar. Jika Anda mengatakan:

gunakan PDL::Graphics::TriD;

Anda mengimpor semuanya dalam daftar standar dari modul. Terkadang Anda mungkin ingin
impor apa-apa (misalnya jika Anda ingin menggunakan sintaks OO sepanjang waktu dan menghemat pajak impor).
Untuk ini Anda mengatakan:

gunakan PDL::Graphics::TriD qw();

Dan tanda kutip kosong "qw()" dikenali sebagai arti 'tidak ada'. Anda juga dapat menentukan
daftar fungsi yang akan diimpor dengan cara Perl biasa.

Ada juga shell interaktif, "perldl" atau "pdl2", lihat perldl atau pdl2 untuk detailnya.

Untuk membuat a yang baru PDL variabel
Berikut adalah beberapa cara untuk membuat variabel PDL:

$a = pdl [1..10]; # larik 1D
$a = pdl (1,2,3,4); # Sama
$a = pdl '[1 2 3 4]'; # Sama
$b = pdl [[1,2,3],[4,5,6]]; # Array 2D 3x2
$b = pdl '[1 2 3; 4 5 6]'; # Sama
$b = pdl q[1,2,3; 4,5,6]; # Sama
$b = pdl <
[1 2 3]
[4 5 6]
BARUPDL
$c = pdl q[1 -2]; # 2-elemen piddle yang mengandung 1 dan -2
$c = pdl q[1 - 2]; # 2-elemen piddle mengandung 1 dan -2
$b = pdl 42 # skalar 0 dimensi
$c = pdl $a; # Buat salinan baru

$d = byte [1..10]; # Lihat "Mengetik konversi"
$e = nol(3,2,4); # 3x2x4 larik berisi nol

$c = rfits $file; # Baca file FITS

@x = ( pdl(42), nol(3,2,4), rfits($file) ); # Apakah DAFTAR variabel PDL!

pdl() fungsi digunakan untuk menginisialisasi variabel PDL dari skalar, daftar, daftar
referensi, variabel PDL lain, atau string yang diformat dengan benar.

Selain itu semua fungsi PDL secara otomatis mengonversi skalar Perl normal ke variabel PDL
dengan cepat.

(lihat juga bagian "Konversi Jenis" dan "Input/Output" di bawah)

Hitung (Dan boolean ekspresi)
$a = $b + 2; $a++; $a = $b / $c; # Dll.

$c=persegi($a); $d = log10($b+100); # Dll

$e = $a>42; # Vektor bersyarat

$e = 42*($a>42) + $a*($a<=42); #topi topi

$b = $a->log10 kecuali ada ($a <= 0); # hindari kesalahan titik mengambang

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

$f = dimana($a, $a > 10); # di mana mengembalikan tumpukan elemen untuk
# yang kondisinya benar

cetak $a; # $a dalam konteks string mencetaknya dalam format N-dimensi

(dan operator/fungsi Perl lainnya)

Saat menggunakan piddle dalam ekspresi bersyarat (yaitu konstruksi "jika", "kecuali" dan "sementara")
hanya piddle dengan tepat satu elemen yang diperbolehkan, mis

$a = pdl(1,0,0,1);
print "set" jika $a->indeks(2);

Perhatikan bahwa operator boolean kembali dalam piddle multi-elemen umum. Oleh karena itu,
berikut akan menimbulkan kesalahan

print "tidak apa-apa" jika $a > 3;

karena "$a > 3" adalah piddle dengan 4 elemen. Alih-alih gunakan semua atau apa saja untuk menguji apakah semua atau salah satu dari
unsur memenuhi syarat :

print "some are > 3" jika ada $a>3;
print "tidak dapat mengambil logaritma" kecuali semua $a>0;

Ada juga banyak fungsi yang telah ditentukan sebelumnya, yang dijelaskan pada halaman manual lainnya. Memeriksa
PDL::Indeks.

Matriks fungsi
'x' dibajak sebagai operator perkalian matriks. misalnya "$c = $ax $b";

perlDL adalah baris-utama bukan kolom utama jadi ini sebenarnya "c(i,j) = sum_k a(k,j) b(i,k)" -
tetapi ketika matriks dicetak hasilnya akan terlihat benar. Ingat saja indeksnya adalah
terbalik. misalnya:

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

memberikan $c = [
[ 1 11]
[ 8 10]
[ 2 2]
]

Catatan: mengubah urutan() melakukan apa yang dikatakannya dan merupakan cara mudah untuk mengubah vektor baris menjadi
vektor kolom.

Seterpercayaapakah Olymp Trade? Kesimpulan untuk menulis a sederhana fungsi
sub produk titik {
saya ($a,$b) = @_;
kembali jumlah($a*$b);
}
1;

Jika dimasukkan ke dalam file dotproduct.pdl akan dimuat secara otomatis jika Anda menggunakan PDL::AutoLoader (lihat
bawah).

Tentu saja, fungsi ini sudah tersedia sebagai fungsi dalam, lihat PDL::Primitive.

Tipe Konversi
Standar untuk pdl() adalah ganda. Konversi adalah:

$a = pelampung($b);
$c = panjang($d); # "panjang" umumnya berukuran 4 byte
$d = byte($a);

Juga dobel(), pendek(), mengantar(), indeks().

CATATAN: Rutin indx() adalah tipe integer khusus yang
adalah ukuran yang benar untuk nilai indeks PDL (ukuran dimensi,
index, atau offest) yang dapat berupa 32bit (panjang) atau
64bit (panjang) kuantitas tergantung pada apakah perl
dibangun dengan dukungan 32bit atau 64bit.

Rutinitas ini juga secara otomatis mengonversi daftar Perl untuk memungkinkan steno yang nyaman:

$a = byte [[1..10],[1..10]]; # Buat array byte 2D
$a = float [1..1000]; # Buat array float 1D

dan sebagainya

Pencetakan
Secara otomatis memperluas array dalam format N-dimensi:

cetak $a;

$b = "Jawabannya adalah = $a";

bagian
PDL memiliki operator slicing dan sectioning multidimensi yang sangat kuat; lihat
PDL::Slice(3) halaman manual untuk detailnya; kami akan menjelaskan yang paling penting di sini.

PDL menunjukkan warisan Perl/C-nya dalam array yang tidak memiliki offset. Jadi gambar 100x100 memiliki
indeks "0..99,0". (Konvensinya adalah bahwa pusat piksel (0,0) berada pada koordinat
(0.0,0.0). Semua fungsi grafik PDL sesuai dengan definisi ini dan menyembunyikan unit
offset, misalnya, perpustakaan PGPLOT FORTRAN.

Mengikuti koordinat konvensi biasa (0,0) ditampilkan di kiri bawah ketika
menampilkan sebuah gambar. Itu muncul di kiri atas saat menggunakan ""print $a"" dll.

Pembagian sederhana menggunakan ekstensi sintaks ke Perl, PDL::NiceSlice, yang memungkinkan Anda untuk
tentukan subrentang melalui pengubah metode nol ke PDL:

$b = $a->($x1:$x2,$y1:$y2,($z1)); # Ambil subbagian

Di sini, $a adalah variabel 3 dimensi, dan $b mendapatkan potongan planar yang didefinisikan oleh:
batas $x1, $x2, $y1, $y2, di lokasi $z1. Tanda kurung di sekitar $z1 menyebabkan
indeks sepele untuk dihilangkan -- jika tidak, $b akan menjadi tiga dimensi dengan yang ketiga
dimensi urutan 1.

Anda dapat meletakkan irisan PDL di kedua sisi operator penugasan elemen-bijaksana ".=", seperti
begitu:

# Setel bagian dari $bigimage ke nilai dari $smallimage
$bigimage->($xa:$xb,$ya:$yb) .= $smallimage;

Beberapa aneka lainnya:

$c = nelem($a); # Jumlah piksel

$val = at($object, $x,$y,$z...) # Nilai piksel pada posisi, sebagai skalar Perl
$val = $object->at($x,$y,$z...) # setara (sintaks metode OK)

$b = xvals($a); # Isi array dengan nilai X-coord (juga yvals(), zvals(),
# axisvals($x,$axis) dan rvals() untuk jarak radial
# dari pusat).

Input / Output
Modul "PDL::IO" mengimplementasikan beberapa fungsi format IO yang berguna. Itu akan terlalu banyak
untuk memberikan contoh masing-masing, tetapi Anda dapat menemukan gambaran umum yang bagus di PDL::IO. Berikut adalah contoh dari
beberapa format IO yang didukung dalam PDL.

PDL::IO::Lain-lain
Rutinitas Ascii, FITS dan FIGARO/NDF IO.

PDL::IO::FastRaw
Menggunakan tipe data mentah mesin Anda, IO yang tidak portabel namun sangat cepat
format. Juga mendukung pemetaan memori untuk menghemat memori serta mendapatkan kecepatan lebih.

PDL::IO::FlexRaw
Format data mentah umum. Seperti FastRaw, hanya lebih baik.

PDL::IO::Peramban
Browser Kutukan untuk array.

PDL::IO::PNM
Portaple bitmap dan dukungan pixmap.

PDL::IO::Gambar
Menggunakan modul dan netpbm sebelumnya, memungkinkan untuk menulis GIF, jpeg . dengan mudah
dan apa pun dengan perintah sederhana.

Grafis
Filosofi di balik perlDL adalah membuatnya bekerja dengan berbagai grafik yang ada
perpustakaan karena tidak ada paket tunggal yang akan memenuhi semua kebutuhan dan semua orang dan ini memungkinkan
satu untuk bekerja dengan paket yang sudah dikenal dan disukai. Jelas akan ada beberapa
tumpang tindih dalam fungsionalitas dan beberapa kurangnya konsistensi dan keseragaman. Namun ini memungkinkan
PDL untuk mengikuti bidang yang berkembang pesat - modul PDL terbaru menyediakan antarmuka
untuk grafis OpenGL dan VRML!

PDL::Grafik::PGPLOT
PGPLOT menyediakan perpustakaan sederhana untuk grafik garis dan tampilan gambar.

Ada antarmuka yang mudah untuk ini di modul internal PDL::Graphics::PGPLOT, yang
memanggil rutinitas dalam modul tingkat atas PGPLOT yang tersedia secara terpisah.

PDL::Grafik::PLplot
PLplot menyediakan perpustakaan sederhana untuk membuat grafik dengan beberapa driver keluaran,
termasuk driver direct-to-piddle.

Modul ini menyediakan fungsionalitas tingkat tinggi dan tingkat rendah yang dibangun di atas PLplot. Itu
perintah tingkat rendah cukup banyak mengikat langsung ke antarmuka C PLplot. Baca lebih lajut
di PDL::Graphics::PLplot.

PDL::Grafik::IIS
Banyak astronom suka menggunakan SAOimage dan Ximtool (atau ada turunan/klon). Ini
adalah widget gratis yang berguna untuk inspeksi dan visualisasi gambar. (Mereka tidak
disediakan dengan perlDL tetapi dapat dengan mudah diperoleh dari situs resmi mereka di luar
Bersih.)

Paket PDL::Graphics::IIS memungkinkan seseorang untuk menampilkan gambar di dalamnya ("IIS"
adalah nama item kuno perangkat keras tampilan gambar yang protokolnya menggunakan alat ini
sesuai dengan.)

PDL::Grafik::TriD
Lihat PDL::Graphics::TriD, ini adalah kumpulan rutin 3D untuk OpenGL dan (segera)
VRML dan format 3D lainnya yang memungkinkan plot titik, garis, dan permukaan 3D dari PDL.

Pemuatan otomatis
Lihat PDL::AutoLoader. Ini memungkinkan seseorang untuk memuat fungsi secara otomatis sesuai permintaan, dengan cara yang mungkin
akrab bagi pengguna MatLab.

Seseorang juga dapat menulis ekstensi PDL sebagai modul Perl biasa.

PDL kerang
Skrip Perl "pdl2" (atau "perldl") menyediakan antarmuka baris perintah sederhana ke PDL. Jika
modul Readlines/ReadKey terbaru telah diinstal "pdl2" mendeteksi ini dan mengaktifkan
pemanggilan dan pengeditan baris perintah. Lihat halaman manual untuk detailnya.

misalnya:

% perldl
cangkang perlDL v1.354
PDL datang dengan BENAR-BENAR TANPA GARANSI. Untuk detailnya, lihat file
'COPYING' dalam distribusi PDL. Ini adalah perangkat lunak gratis dan Anda
dipersilakan untuk mendistribusikannya kembali dalam kondisi tertentu, lihat
file yang sama untuk detailnya.
ReadLines, NiceSlice, MultiLines diaktifkan
Membaca PDL/default.perldlrc...
Ditemukan database dokumen /home/pdl/dev/lib/perl5/site_perl/PDL/pdldoc.db
Ketik 'bantuan' untuk bantuan online
Ketik 'demo' untuk demo online
Memuat PDL v2.4.9_003 (mendukung nilai buruk)
pdl> $x = rfits 'm51.fits'
Membaca data GAMBAR...
BITPIX = 32 ukuran = 147456 piksel
Membaca 589824 byte
BSCALE = && BZERO =

pdl> gunakan PDL::Graphics::PGPLOT;
pdl> gambar $x
Menampilkan gambar 384 x 384 dari 40 hingga 761, menggunakan 84 warna (16-99)...

Anda juga dapat menjalankannya dari debugger Perl ("perl -MPDL -d -e 1") jika Anda mau.

Fitur shell lain-lain:

p Shell alias "p" menjadi bentuk pendek yang nyaman dari "cetak", mis

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

Inisialisasi
File"~/.perldlrc" dan "local.perldlrc" (dalam direktori saat ini) bersumber jika
ditemukan. Hal ini memungkinkan pengguna untuk memiliki kode PDL global dan lokal untuk startup.

Bantuan
Ketik 'bantuan'! Seseorang dapat mencari dokumentasi PDL, dan mencari dokumentasi di mana saja
fungsi.

Melarikan diri
Setiap baris yang dimulai dengan karakter "#" diperlakukan sebagai pelarian shell. karakter ini
dapat dikonfigurasi dengan mengatur variabel Perl $PERLDL_ESCAPE. Ini bisa, misalnya,
diatur dalam"~/.perldlrc".

Overload operator
Operator dan fungsi Perl bawaan berikut telah kelebihan beban untuk bekerja pada PDL
variabel:

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

[Semua fungsi unary (sin dll.) dapat digunakan dengan di tempat() - lihat "Memori" di bawah.]

Orientasi Objek dan perlDL
Operasi PDL tersedia sebagai fungsi dan metode. Dengan demikian seseorang dapat memperoleh jenis baru dari
objek, untuk mewakili kelas data kustom.

Dengan menggunakan kelebihan beban, seseorang dapat membuat operator matematika melakukan apa pun yang Anda inginkan, dan PDL
memiliki beberapa trik bawaan yang memungkinkan fungsi PDL yang ada berfungsi tidak berubah, bahkan jika
representasi data yang mendasarinya sangat berubah! Lihat PDL::Objek

Memori pemakaian dan referensi
Bermain-main dengan array data yang sangat besar mungkin memerlukan perawatan. perlDL menyediakan banyak
fasilitas untuk memungkinkan Anda melakukan operasi pada array besar tanpa menghasilkan salinan tambahan
meskipun ini memang membutuhkan sedikit lebih banyak pemikiran dan perhatian dari programmer.

CATATAN: Pada sebagian besar sistem, lebih baik mengonfigurasi Perl (selama opsi build) ke
gunakan fungsi sistem "malloc()" daripada fungsi bawaan Perl. Ini karena Perl's
satu dioptimalkan untuk kecepatan daripada konsumsi memori virtual - ini dapat mengakibatkan
faktor dua peningkatan dalam jumlah penyimpanan memori yang dapat Anda gunakan. Perl malloc
di 5.004 dan yang lebih baru memang memiliki sejumlah opsi waktu kompilasi yang dapat Anda gunakan untuk menyetel
tingkah laku.

aritmatika sederhana
Jika $a adalah gambar besar (misalnya menempati 10MB) maka perintah

$a = $a + 1;

memakan 10MB memori lagi. Ini karena ekspresi "$a+1" menciptakan a
salinan sementara $a untuk menampung hasilnya, kemudian $a diberikan referensi untuk itu.
Setelah ini, $a asli dihancurkan sehingga tidak ada permanen pemborosan memori. Tapi di
mesin kecil, pertumbuhan jejak memori bisa sangat besar. Dia
jelas dilakukan dengan cara ini sehingga "$c=$a+1" berfungsi seperti yang diharapkan.

Juga jika seseorang mengatakan:

$b = $a; # $b dan $a sekarang menunjuk ke data yang sama
$a = $a + 1;

Kemudian $b dan $a menjadi berbeda, seperti yang diharapkan secara naif, karena referensi baru
dibuat dan $a ditugaskan untuk itu.

Namun jika $a adalah babi memori yang sangat besar (misalnya volume 3D) membuat salinannya mungkin tidak
menjadi hal yang baik. Seseorang dapat menghindari overhead memori ini dalam contoh di atas dengan mengatakan:

$a++;

Operasi "++,+=,--,-=", dll. semuanya memanggil versi khusus "di tempat" dari
subrutin aritmatika. Ini berarti tidak diperlukan memori lagi - kelemahannya adalah
bahwa jika "$b=$a" maka $b juga bertambah. Untuk memaksa salinan secara eksplisit:

$b = pdl $a; # Salinan asli

atau, sebagai alternatif, mungkin gaya yang lebih baik:

$b = $a->salin;

Fungsi
Sebagian besar fungsi, misalnya "log()", mengembalikan hasil yang merupakan transformasi dari
argumen. Ini membuat praktik pemrograman yang baik. Namun banyak operasi dapat
dilakukan "di tempat" dan ini mungkin diperlukan ketika array besar sedang digunakan dan memori berada di
sebuah premi. Untuk keadaan ini operator di tempat() disediakan yang mencegah
salinan tambahan dan memungkinkan argumen untuk dimodifikasi. misalnya:

$x = log($array); # $array tidak terpengaruh
log( di tempat($bigarray) ); # $bigarray berubah di tempat

PERINGATAN:

1. Peringatan biasa tentang referensi duplikat berlaku.

2. Jelas ketika digunakan dengan beberapa fungsi yang tidak dapat diterapkan di situ (mis
"convolve()") efek tak terduga dapat terjadi! Kami mencoba untuk menunjukkan "inplace()"-safe
fungsi dalam dokumentasi.

3. Konversi jenis, seperti"float()", dapat menyebabkan penyalinan tersembunyi.

memastikan kekesalan
Jika Anda telah menulis sebuah fungsi sederhana dan Anda tidak ingin itu meledak di wajah Anda jika Anda
berikan nomor sederhana daripada variabel PDL. Cukup panggil fungsinya topdl() pertama
untuk membuatnya aman. misalnya:

sub myfiddle { $pdl saya = topdl(shift); $pdl->fiddle_foo(...); ... }

"topdl()" TIDAK melakukan penyalinan jika variabel pdl dilewatkan - itu hanya jatuh -
yang jelas merupakan perilaku yang diinginkan. Rutinitas tentu saja tidak diperlukan dalam keadaan normal
fungsi yang ditentukan pengguna yang tidak peduli dengan internal.

Gunakan PDL::QuickStartp online menggunakan layanan onworks.net



Program online Linux & Windows terbaru