perl561delta - Online di Cloud

Ini adalah perintah perl561delta 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


perl561delta - apa yang baru untuk Perl v5.6.1

DESKRIPSI


Dokumen ini menjelaskan perbedaan antara rilis 5.005 dan rilis 5.6.1.

Ringkasan of perubahan antara 5.6.0 dan 5.6.1


Bagian ini berisi ringkasan perubahan antara rilis 5.6.0 dan versi 5.6.1
melepaskan. Detail lebih lanjut tentang perubahan yang disebutkan di sini dapat ditemukan di Perubahan arsip
yang menyertai distribusi sumber Perl. Lihat perlhack untuk petunjuk ke online
sumber daya di mana Anda dapat memeriksa patch individual yang dijelaskan oleh perubahan ini.

Security Isu
suidperl tidak akan menjalankan /bin/mail lagi, karena beberapa platform memiliki /bin/mail yang
rentan terhadap serangan buffer overflow.

Perhatikan bahwa suidperl tidak dibuat atau diinstal secara default di versi terbaru
perl. Penggunaan suidperl sangat tidak dianjurkan. Jika Anda merasa membutuhkannya, coba alternatif
seperti sudo dulu. Melihat http://www.courtesan.com/sudo/ .

Core kesalahan tetap
Ini bukan daftar yang lengkap. Ini dimaksudkan untuk hanya mencakup yang terlihat oleh pengguna yang signifikan
perubahan.

"UNIVERSAL::isa()"
Bug dalam mekanisme caching yang digunakan oleh "UNIVERSAL::isa()" yang memengaruhi base.pm telah
telah diperbaiki. Bug telah ada sejak rilis 5.005, tetapi tidak digelitik oleh
base.pm dalam rilis tersebut.

Kebocoran memori
Berbagai kasus kebocoran memori dan upaya untuk mengakses memori yang tidak diinisialisasi telah
sembuh. Lihat "Masalah yang Diketahui" di bawah untuk masalah lebih lanjut.

Konversi numerik
Konversi numerik tidak mengenali perubahan dalam nilai string dengan benar secara pasti
keadaan.

Dalam situasi lain, nomor unsigned besar (yang di atas 2**31) terkadang bisa kalah
unsignedness mereka, menyebabkan hasil palsu dalam operasi aritmatika.

Modulus bilangan bulat pada bilangan bulat besar yang tidak ditandatangani terkadang mengembalikan nilai yang salah.

Perl 5.6.0 menghasilkan peringatan "bukan angka" pada konversi tertentu di mana sebelumnya
versi tidak.

Semua masalah ini telah diperbaiki.

Infinity sekarang diakui sebagai angka.

qw(a\\b)
Di Perl 5.6.0, qw(a\\b) menghasilkan string dengan dua garis miring terbalik, bukan satu, dalam
keberangkatan dari perilaku di versi sebelumnya. Perilaku yang lebih tua adalah
dipulihkan.

penelepon()
penelepon() dapat menyebabkan core dump dalam situasi tertentu. Ikan mas terkadang dipengaruhi oleh
masalah ini.

Bug dalam ekspresi reguler
Pencocokan pola pada nilai yang kelebihan beban sekarang ditangani dengan benar.

Perl 5.6.0 mengurai m/\x{ab}/ salah, menyebabkan peringatan palsu. ini telah
dikoreksi.

Mesin RE yang ditemukan di Perl 5.6.0 secara tidak sengaja meremehkan beberapa jenis sederhana
pencocokan pola. Ini sekarang ditangani dengan lebih baik.

Output debug ekspresi reguler (baik melalui "use re 'debug'" atau melalui "-Dr") sekarang
Terlihat lebih baik.

Pencocokan multi-baris seperti ""a\nxb\n" =~ /(?!\A)x/m" cacat. Bugnya sudah
tetap.

Penggunaan $& dapat memicu dump inti dalam beberapa situasi. Ini sekarang dihindari.

Variabel pencocokan $1 dkk., tidak disetel saat pencocokan pola mundur,
dan anomali muncul di dalam "/...(?{ ... }).../" dll. Variabel ini sekarang
dilacak dengan benar.

pos() tidak mengembalikan nilai yang benar dalam s///ge di versi sebelumnya. Ini sekarang
ditangani dengan benar.

mode "menyeruput"
garis baca() pada file yang dibuka dalam mode "slurp" dapat mengembalikan "" tambahan di akhir
situasi tertentu. Ini telah diperbaiki.

Autovivifikasi referensi simbolik ke variabel khusus
Autovivifikasi referensi simbolik dari variabel khusus yang dijelaskan dalam perlvar (sebagai
di "${$num}") tidak sengaja dinonaktifkan. Ini berfungsi lagi sekarang.

Peringatan leksikal
Peringatan leksikal sekarang menyebar dengan benar ke "eval "..."".

"gunakan peringatan qw(FATAL semua)" tidak berfungsi sebagaimana mestinya. Ini telah diperbaiki.

Peringatan leksikal bisa bocor ke lingkup lain dalam beberapa situasi. Ini sekarang sudah diperbaiki.

peringatan::diaktifkan() sekarang melaporkan status $^W dengan benar jika penelepon tidak menggunakan
peringatan leksikal.

Peringatan dan kesalahan palsu
Perl 5.6.0 dapat mengeluarkan peringatan palsu tentang redefinisi dari dl_kesalahan() ketika
membuat ekstensi secara statis menjadi Perl. Ini telah diperbaiki.

variabel "kami" dapat menghasilkan peringatan "Variabel tidak akan tetap dibagikan" palsu. Ini
sekarang sudah diperbaiki.

variabel "kami" dengan nama yang sama dideklarasikan dalam dua blok saudara menghasilkan kesalahan
peringatan tentang "deklarasi ulang" dari variabel. Masalahnya telah diperbaiki.

gumpal()
Kompatibilitas bawaan gumpal() dengan glob berbasis csh lama telah ditingkatkan dengan
penambahan opsi GLOB_ALPHASORT. Lihat "File::Glob".

Berkas::Glob::glob() telah diubah namanya menjadi Berkas::Glob::bsd_glob() karena namanya bentrok
dengan bawaan gumpal(). Nama yang lebih lama masih tersedia untuk kompatibilitas, tetapi adalah
usang.

Kesalahan sintaksis palsu yang dihasilkan dalam situasi tertentu, ketika gumpal() menyebabkan File::Glob
akan dimuat untuk pertama kalinya, telah diperbaiki.

Menodai
Beberapa kasus propagasi noda yang tidak konsisten (seperti dalam nilai hash) telah
tetap.

Perilaku menodai lari cepat() telah dirasionalisasi. Itu tidak mengotori
hasil format floating point lagi, membuat perilaku konsisten dengan
interpolasi string.

menyortir()
Argumen untuk menyortir() tidak diberikan hak larik() konteks. Itu
blok perbandingan sekarang dijalankan dalam konteks skalar, dan argumen yang akan diurutkan adalah
selalu menyediakan konteks daftar.

menyortir() juga sepenuhnya masuk kembali, dalam arti bahwa fungsi sortir dapat memanggil sendiri
menyortir(). Ini tidak bekerja dengan andal di rilis sebelumnya.

#arahan baris
#line directive sekarang bekerja dengan benar ketika muncul di awal "eval
"..."".

Prototipe subrutin
Prototipe (\&) sekarang berfungsi dengan baik.

peta()
peta() bisa menjadi lambat secara patologis ketika daftar hasil yang dihasilkannya lebih besar dari
daftar sumber. Kinerja telah ditingkatkan untuk skenario umum.

Debugger
Kode keluar debugger sekarang mencerminkan kode keluar skrip.

Kondisi "0" di breakpoint sekarang diperlakukan dengan benar.

Perintah "d" sekarang memeriksa nomor baris.

$. tidak lagi rusak oleh debugger.

Semua keluaran debugger sekarang masuk ke soket dengan benar jika RemotePort diatur.

PERL5OPT
PERL5OPT dapat diatur ke lebih dari satu grup sakelar. Sebelumnya, dulu terbatas
untuk satu kelompok pilihan saja.

memotong()
chop(@list) dalam konteks daftar mengembalikan karakter yang dipotong dalam urutan terbalik. Ini
telah dibalik menjadi urutan yang benar.

Dukungan Unicode
Dukungan Unicode telah melihat sejumlah besar peningkatan bertahap, tetapi terus berlanjut
menjadi sangat eksperimental. Itu tidak diharapkan untuk didukung sepenuhnya di 5.6.x
rilis pemeliharaan.

substr(), Ikuti(), ulang(), balik(), kutipanmeta() dan rangkaian string semuanya
menangani string Unicode secara tidak benar di Perl 5.6.0. Ini telah diperbaiki.

Dukungan untuk "tr///CU" dan "tr///UC" dll., telah dihapus sejak kami menyadarinya
antarmuka rusak. Untuk fungsi serupa, lihat "paket" di perlfunc.

Basis Data Karakter Unicode telah diperbarui ke versi 3.0.1 dengan tambahan yang dibuat
tersedia untuk umum pada 30 Agustus 2000.

Kelas karakter Unicode \p{Blank} dan \p{SpacePerl} telah ditambahkan. "Kosong" adalah
seperti C kosong(), yaitu, hanya berisi "spasi putih horizontal" (spasi
karakter adalah, baris baru tidak), dan "SpacePerl" adalah padanan Unicode dari
"\s" (\p{Spasi} tidak, karena itu termasuk karakter tabulator vertikal, sedangkan
"\s" tidak.)

Jika Anda bereksperimen dengan dukungan Unicode di Perl, versi pengembangan dari
Perl mungkin memiliki lebih banyak untuk ditawarkan. Secara khusus, lapisan I/O sekarang tersedia di
jalur pengembangan, tetapi tidak di jalur pemeliharaan, terutama untuk melakukan mundur
masalah kompatibilitas. Dukungan Unicode juga berkembang pesat setiap hari di
jalur pengembangan--jalur pemeliharaan hanya mencerminkan yang paling konservatif dari
perubahan ini.

Dukungan 64-bit
Dukungan untuk platform 64-bit telah ditingkatkan, tetapi terus eksperimental. Itu
tingkat dukungan sangat bervariasi antar platform.

Penyusun
Kompilator B dan berbagai backendnya memiliki banyak peningkatan bertahap, tetapi
mereka tetap sangat eksperimental. Penggunaan di lingkungan produksi adalah
patah semangat.

Alat perlcc telah ditulis ulang sehingga antarmuka pengguna jauh lebih seperti itu
dari kompiler C.

Alat perlbc telah dihapus. Gunakan "perlcc -B" sebagai gantinya.

Nilai subrutin
Ada berbagai perbaikan bug untuk mendukung subrutin lvalue dengan lebih baik. Namun,
fitur masih tetap eksperimental.

IO::Soket
IO::Socket::INET gagal membuka port yang ditentukan jika nama layanan tidak diketahui.
Sekarang dengan benar menggunakan nomor port yang disediakan apa adanya.

Berkas::Temukan
File::Temukan sekarang chdir()s dengan benar saat mengejar tautan simbolik.

xsubpp
xsubpp sekarang mentolerir bagian POD yang disematkan.

"tidak ada Modul;"
"tidak ada Modul;" tidak menghasilkan kesalahan bahkan jika Modul tidak memiliki batalkan impor()
metode. Ini paralel dengan perilaku "penggunaan" vis-a-vis "impor".

Tes
Sejumlah besar tes telah ditambahkan.

Core fitur
membuka() sekarang akan memanggil MEMBUKA() kait jika ada. Lihat perltie untuk detailnya.

Sakelar baris perintah "-DT" mengeluarkan informasi tokenizing yang berlebihan. Lihat perlrun.

Array sekarang selalu diinterpolasi dalam string tanda kutip ganda. Sebelumnya, "foo@bar.com"
dulunya merupakan kesalahan fatal pada waktu kompilasi, jika array @bar tidak digunakan atau dideklarasikan. Ini
perilaku transisi dimaksudkan untuk membantu memigrasikan kode Perl4, dan dianggap tidak
lebih lama berguna. Lihat "Array sekarang selalu diinterpolasi menjadi string bertanda kutip ganda".

kunci(), setiap(), pop (), Dorong(), menggeser(), sambatan() dan tidak bergeser() semua bisa ditimpa sekarang.

"my __PACKAGE__ $obj" sekarang melakukan hal yang diharapkan.

konfigurasi masalah
Pada beberapa sistem (IRIX dan Solaris di antaranya) sistem malloc terbukti lebih baik.
Sementara default belum diubah untuk mempertahankan kompatibilitas biner dengan
rilis sebelumnya, Anda mungkin lebih baik membangun Perl dengan "Configure -Uusemymalloc ..."
seperti yang dibahas dalam INSTALL file.

"Konfigurasi" telah ditingkatkan dengan berbagai cara:

· Meminimalkan penggunaan file-file sementara.

· Secara default, tidak menghubungkan Perl dengan perpustakaan yang tidak digunakan olehnya, seperti berbagai dbm
perpustakaan. Petunjuk SunOS 4.x mempertahankan perilaku pada platform itu.

· Dukungan untuk model memori gaya pdp11 telah dihapus karena usang.

· Membangun di luar pohon sumber didukung pada sistem yang memiliki tautan simbolik.
Ini dilakukan dengan berlari

sh /path/ke/sumber/Konfigurasi -Dmksymlinks ...
buat semua tes instal

di direktori selain direktori sumber perl. Melihat INSTALL.

· "Konfigurasi -S" dapat dijalankan secara non-interaktif.

Dokumentasi
README.aix, README.solaris dan README.macos telah ditambahkan. README.posix-bc telah
berganti nama menjadi README.bs2000. Ini diinstal sebagai perlaix, perlsolaris, perlmacos, dan
perlbs2000 masing-masing.

Dokumen pod berikut ini benar-benar baru:

perlclib Pengganti internal untuk fungsi pustaka C standar
perldebtut Tutorial debugging Perl
perlebcdic Pertimbangan untuk menjalankan Perl pada platform EBCDIC
perlnewmod Modul Perl: menyiapkan modul baru untuk distribusi
perlrequick Perl ekspresi reguler mulai cepat
perlretut Perl tutorial ekspresi reguler
utilitas perlutil yang dikemas dengan distribusi Perl

INSTALL file telah diperluas untuk mencakup berbagai masalah, seperti dukungan 64-bit.

Daftar kontributor yang lebih panjang telah ditambahkan ke distribusi sumber. Lihat filenya
"PENGARANG".

Banyak perubahan lain telah dilakukan pada dokumentasi dan FAQ yang disertakan.

dibundel modul
Modul berikut telah ditambahkan.

B::Ringkas
Pohon sintaks Walks Perl, mencetak info singkat tentang ops. Lihat B::Ringkas.

Berkas::Temp
Mengembalikan nama dan pegangan file sementara dengan aman. Lihat File::Temp.

Pod::LaTeX
Mengonversi data Pod ke LaTeX yang diformat. Lihat Pod::LaTeX.

Pod::Teks::Overstrike
Mengonversi data POD menjadi teks overstrike yang diformat. Lihat Pod::Teks::Overstrike.

Modul berikut telah ditingkatkan.

CGI CGI v2.752 sekarang disertakan.

CPAN
CPAN v1.59_54 sekarang disertakan.

Kelas::Struktur
Berbagai perbaikan bug telah ditambahkan.

DB_File
DB_File v1.75 mendukung versi Berkeley DB yang lebih baru, di antara peningkatan lainnya.

Pengembang::Mengintip
Devel::Peek telah ditingkatkan untuk mendukung dumping statistik memori, ketika Perl adalah
dibangun dengan termasuk malloc ().

Berkas::Temukan
File::Find sekarang mendukung pra dan pasca-pemrosesan file untuk menyortir() mereka,
dan sebagainya

Getopt::Panjang
Getopt::Long v2.25 disertakan.

IO :: Jajak Pendapat
Berbagai perbaikan bug telah disertakan.

IPC::Buka3
IPC::Open3 memungkinkan penggunaan deskriptor file numerik.

Matematika::Apung Besar
fmod() fungsi mendukung operasi modulus. Berbagai perbaikan bug juga telah
disertakan.

Matematika::Kompleks
Math::Complex menangani inf, NaN dll., Lebih baik.

Bersih::Ping
ping() bisa gagal pada jumlah byte data ganjil, dan ketika layanan gema tidak
berlari. Ini telah diperbaiki.

opcode
Kebocoran memori telah diperbaiki.

Pod::Pengurai
Versi 1.13 dari Pod :: Parser suite disertakan.

Pod::Teks
Pod::Teks dan modul terkait telah ditingkatkan ke versi di podlators suite
v2.08.

SDBM_File
Pada platform dosish, beberapa kunci hilang karena kurangnya dukungan untuk file dengan
"lubang". Solusi untuk masalah telah ditambahkan.

Sis::Syslog
Berbagai perbaikan bug telah disertakan.

Dasi::RefHash
Sekarang mendukung Tie::RefHash::Nestable untuk mengikat nilai hashref secara otomatis.

Dasi::SubstrHash
Berbagai perbaikan bug telah disertakan.

Khusus platform perbaikan
Port baru berikut sekarang tersedia.

NCR MP-RAS
NonStop-UX

Perl sekarang dibangun di bawah Amdahl UTS.

Perl juga telah diverifikasi untuk dibangun di bawah Amiga OS.

Dukungan untuk EPOC telah jauh lebih baik. Lihat README.epoc.

Membangun Perl dengan -Duseithreads atau -Duse5005threads sekarang berfungsi di bawah HP-UX 10.20
(sebelumnya hanya berfungsi di bawah 10.30 atau lebih baru). Anda akan membutuhkan paket pustaka utas
diinstal. Lihat README.hpux.

Ganda panjang sekarang harus bekerja di Linux.

Mac OS Classic sekarang didukung dalam paket sumber arus utama. Lihat README.macos.

Dukungan untuk MPE/iX telah diperbarui. Lihat README.mpeix.

Dukungan untuk OS/2 telah ditingkatkan. Lihat "os2/Perubahan" dan README.os2.

Pemuatan dinamis pada z/OS (sebelumnya OS/390) telah ditingkatkan. Lihat README.os390.

Dukungan untuk VMS telah melihat banyak peningkatan tambahan, termasuk dukungan yang lebih baik untuk
operator seperti backtick dan sistem(), dan penanganan %ENV yang lebih baik. Lihat "README.vms" dan
perlvm.

Dukungan untuk Stratus VOS telah ditingkatkan. Lihat "vos/Perubahan" dan README.vos.

Dukungan untuk Windows telah ditingkatkan.

· garpu() emulasi telah ditingkatkan dalam berbagai cara, tetapi masih terus berlanjut
eksperimental. Lihat perlfork untuk bug dan peringatan yang diketahui.

· %SIG telah diaktifkan di bawah USE_ITHREADS, tetapi penggunaannya sama sekali tidak didukung di bawah
semua konfigurasi.

· Borland C++ v5.5 sekarang menjadi kompiler yang didukung yang dapat membangun Perl. Namun,
binari yang dihasilkan terus tidak sesuai dengan yang dihasilkan oleh yang lain
compiler yang didukung (GCC dan Visual C++).

· Penantian non-pemblokiran untuk proses anak (atau proses semu) didukung melalui
"waitpid($pid, &POSIX::WNOHANG)".

· Kebocoran memori di menerima() telah diperbaiki.

· tunggu(), tunggu() dan backticks sekarang mengembalikan status keluar yang benar di bawah Windows 9x.

· Mengikuti entri %ENV baru tidak disebarkan ke proses anak. Ini sekarang sudah diperbaiki.

· Entri direktori saat ini di %ENV sekarang disebarkan dengan benar ke proses anak.

· Menangani soket pemalsuan dengan open(F, ">&MYSOCK") sekarang berfungsi di bawah Windows 9x.

· Makefile sekarang menyediakan satu sakelar untuk mengaktifkan massal semua fitur yang diaktifkan di
ActiveState ActivePerl (distribusi biner populer).

· Win32::GetCwd() mengembalikan C:\ alih-alih C: dengan benar saat berada di root drive. Lainnya
bug di chdir() dan Cwd::cwd() juga telah diperbaiki.

· garpu() mengembalikan undef dengan benar dan menyetel EAGAIN ketika kehabisan proses semu
pegangan.

· ExtUtils::MakeMaker sekarang menggunakan $ENV{LIB} untuk mencari perpustakaan.

· Penanganan jalur UNC lebih baik ketika Perl dibangun untuk mendukung garpu().

· Kebocoran pegangan dalam penanganan soket telah diperbaiki.

· Kirim() bekerja dari dalam proses semu.

Kecuali secara khusus memenuhi syarat lain, sisa dokumen ini mencakup perubahan
antara rilis 5.005 dan 5.6.0.

Core tambahan


Penerjemah kloning, benang, dan konkurensi
Perl 5.6.0 memperkenalkan awal dukungan untuk menjalankan banyak juru bahasa
secara bersamaan di thread yang berbeda. Dalam hubungannya dengan perl_klon() Panggilan API, yang
dapat digunakan untuk secara selektif menduplikasi keadaan penerjemah yang diberikan, dimungkinkan untuk
mengkompilasi sepotong kode sekali dalam juru bahasa, mengkloning juru bahasa itu satu kali atau lebih,
dan jalankan semua penerjemah yang dihasilkan di utas yang berbeda.

Pada platform Windows, fitur ini digunakan untuk meniru garpu() pada tingkat penerjemah.
Lihat perlfork untuk detail tentang itu.

Fitur ini masih dalam evolusi. Ini pada akhirnya dimaksudkan untuk digunakan secara selektif
mengkloning subrutin dan data yang dapat dijangkau dari subrutin itu dalam penerjemah terpisah dan
jalankan subrutin kloning di utas terpisah. Karena tidak ada data bersama antara
penerjemah, sedikit atau tanpa penguncian akan diperlukan (kecuali bagian dari tabel simbol adalah
dibagikan secara eksplisit). Ini jelas dimaksudkan sebagai pengganti yang mudah digunakan untuk
dukungan utas yang ada.

Dukungan untuk mengkloning juru bahasa dan konkurensi juru bahasa dapat diaktifkan menggunakan
-Dusethreads Configure option (lihat win32/Makefile untuk mengetahui cara mengaktifkannya di Windows.)
Perl yang dapat dieksekusi akan secara fungsional identik dengan yang dibangun dengan
-Dmultiplisitas, tapi perl_klon() Panggilan API hanya akan tersedia di versi sebelumnya.

-Dusethreads mengaktifkan USE_ITHREADS makro cpp secara default, yang pada gilirannya mengaktifkan Perl
perubahan kode sumber yang memberikan pemisahan yang jelas antara pohon op dan datanya
beroperasi dengan. Yang pertama tidak dapat diubah, dan oleh karena itu dapat dibagi antara an
penerjemah dan semua klonnya, sedangkan yang terakhir dianggap lokal untuk masing-masing
penerjemah, dan karena itu disalin untuk setiap klon.

Perhatikan bahwa membangun Perl dengan opsi -Dusemultiplicity Configure sudah memadai jika Anda
ingin menjalankan banyak independen interpreter secara bersamaan di utas yang berbeda.
-Dusethreads hanya menyediakan fungsionalitas tambahan dari perl_klon() Panggilan API dan
dukungan lain untuk berlari dikloning penerjemah secara bersamaan.

CATATAN: Ini adalah fitur eksperimental. Detail implementasi adalah
dapat berubah sewaktu-waktu.

Secara leksikal scoped peringatan kategori
Anda sekarang dapat mengontrol granularitas peringatan yang dipancarkan oleh Perl pada tingkat yang lebih baik menggunakan
pragma "gunakan peringatan". peringatan dan perllexwarn memiliki banyak dokumentasi tentang ini
fitur.

Unicode dan UTF-8 mendukung
Perl sekarang menggunakan UTF-8 sebagai representasi internal untuk string karakter. "utf8" dan
pragma "bytes" digunakan untuk mengontrol dukungan ini dalam lingkup leksikal saat ini. Melihat
perlunicode, utf8 dan byte untuk informasi lebih lanjut.

Fitur ini diharapkan berkembang dengan cepat untuk mendukung beberapa bentuk disiplin I/O yang
dapat digunakan untuk menentukan jenis data input dan output (byte atau karakter). Sampai
itu terjadi, modul tambahan dari CPAN akan diperlukan untuk melengkapi toolkit untuk
berurusan dengan Unicode.

CATATAN: Ini harus dianggap sebagai fitur eksperimental. Penerapan
detail dapat berubah.

Bantuan untuk interpolasi bernama karakter
Escape "\N" baru menginterpolasi karakter bernama dalam string. Misalnya, "Hai!
\N{WHITE SMILING FACE}" dievaluasi menjadi string dengan wajah tersenyum Unicode di akhir.

"kita" deklarasi
Deklarasi "kami" memperkenalkan nilai yang paling baik dipahami sebagai cakupan leksikal
alias simbolis ke variabel global dalam paket yang terkini di mana variabel itu berada
dinyatakan. Ini sebagian besar berguna sebagai alternatif pragma "vars", tetapi juga menyediakan
kesempatan untuk memperkenalkan pengetikan dan atribut lainnya untuk variabel tersebut. Lihat "kami" di
perfunc.

Bantuan untuk string diwakili as a vektor of ordinal
Literal dari bentuk "v1.2.3.4" sekarang diuraikan sebagai string yang terdiri dari karakter dengan
ordinal yang ditentukan. Ini adalah cara alternatif yang lebih mudah dibaca untuk membangun (mungkin
Unicode) string alih-alih menginterpolasi karakter, seperti dalam "\x{1}\x{2}\x{3}\x{4}". Itu
awalan "v" dapat dihilangkan jika ada lebih dari dua ordinal, jadi 1.2.3 diuraikan
sama dengan "v1.2.3".

String yang ditulis dalam formulir ini juga berguna untuk mewakili versi "angka". Ini mudah
untuk membandingkan "angka" versi tersebut (yang sebenarnya hanyalah string biasa) menggunakan salah satu dari
operator perbandingan string biasa "eq", "ne", "lt", "gt", dll., atau melakukan bitwise string
operasi pada mereka menggunakan "|", "&", dll.

Sehubungan dengan variabel ajaib $^V baru (yang berisi versi perl sebagai a
string), literal tersebut dapat digunakan sebagai cara yang dapat dibaca untuk memeriksa apakah Anda menjalankan a
versi tertentu dari Perl:

# ini juga akan diurai dalam versi Perl yang lebih lama
if ($^V dan $^V gt v5.6.0) {
# fitur baru didukung
}

"memerlukan" dan "menggunakan" juga memiliki sihir khusus untuk mendukung literal tersebut. Mereka akan
ditafsirkan sebagai versi daripada sebagai nama modul:

membutuhkan v5.6.0; # parau jika $^V lt v5.6.0
gunakan v5.6.0; # sama, tetapi serak pada waktu kompilasi

Atau, "v" dapat dihilangkan jika ada lebih dari satu titik:

membutuhkan 5.6.0;
gunakan 5.6.0;

Juga, "sprintf" dan "printf" mendukung flag format khusus Perl %v untuk mencetak ordinal dari
karakter dalam string arbitrer:

printf "v%vd", $^V; # mencetak versi saat ini, seperti "v5.5.650"
printf "%*vX", ":", $addr; # memformat alamat IPv6
printf "%*vb", " ", $bit; # menampilkan bitstring

Lihat "Konstruktor nilai skalar" di perldata untuk informasi tambahan.

peningkatan Perl versi penomoran sistem
Dimulai dengan Perl versi 5.6.0, konvensi nomor versi telah diubah menjadi a
Skema "dotted integer" yang lebih umum ditemukan di proyek open source.

Versi pemeliharaan v5.6.0 akan dirilis sebagai v5.6.1, v5.6.2 dll. Berikutnya
seri pengembangan setelah v5.6.0 akan diberi nomor v5.7.x, dimulai dengan v5.7.0, dan
rilis produksi utama berikutnya setelah v5.6.0 adalah v5.8.0.

Modul bahasa Inggris sekarang menetapkan $PERL_VERSION ke $^V (nilai string) daripada $] (a
nilai angka). (Ini adalah potensi ketidakcocokan. Kirimkan laporan kepada kami melalui perlbug jika
Anda terpengaruh oleh ini.)

Sintaks v1.2.3 juga sekarang legal di Perl. Lihat "Dukungan untuk string yang direpresentasikan sebagai a
vektor ordinal" untuk lebih lanjut tentang itu.

Untuk mengatasi penggunaan sistem versi baru setidaknya tiga digit signifikan untuk masing-masing
versi komponen, metode yang digunakan untuk menambah nomor subversi juga telah berubah
agak. Kami berasumsi bahwa versi yang lebih lama dari v5.6.0 telah meningkatkan subversi
komponen dalam kelipatan 10. Versi setelah v5.6.0 akan menambahnya dengan 1. Jadi,
menggunakan notasi baru, 5.005_03 adalah "sama" dengan v5.5.30, dan pemeliharaan pertama
versi berikut v5.6.0 akan menjadi v5.6.1 (yang harus dibaca setara dengan a
nilai floating point 5.006_001 dalam format lama, disimpan dalam $]).

New sintaksis untuk menyatakan subrutin atribut
Sebelumnya, jika Anda ingin menandai subrutin sebagai pemanggilan metode atau memerlukan
otomatis kunci() ketika dimasukkan, Anda harus menyatakan bahwa dengan pragma "gunakan attrs" di
tubuh subrutin. Itu sekarang dapat dicapai dengan sintaks deklarasi, seperti
ini:

sub metode saya : metode terkunci;
...
sub metode saya : metode terkunci {
...
}

sub metode lainnya :terkunci :metode;
...
sub metode lain :terkunci :metode {
...
}

(Perhatikan bagaimana hanya ":" pertama yang wajib, dan spasi di sekitar ":" adalah
pilihan.)

Pemisahan Otomatis.pm dan SelfLoader.pm telah diperbarui untuk menjaga atribut dengan stub
Mereka menyediakan. Lihat atribut.

File dan direktori Menangani bisa be dihidupkan secara otomatis
Mirip dengan bagaimana konstruksi seperti "$x->[0]" mengotomatiskan referensi, menangani konstruktor
(Buka(), bukadir(), pipa(), pasangan soket(), buka sistem(), stopkontak (), dan menerima()) sekarang
autovivify pegangan file atau direktori jika pegangan yang diteruskan ke mereka adalah yang tidak diinisialisasi
variabel skalar. Ini memungkinkan konstruksi seperti "open(my $fh, ...)" dan "open(local
$fh,...)" untuk digunakan membuat filehandle yang akan ditutup secara otomatis
ketika ruang lingkup berakhir, asalkan tidak ada referensi lain untuk mereka. Ini sebagian besar
menghilangkan kebutuhan akan typeglobs saat membuka pegangan file yang harus diedarkan, seperti
dalam contoh berikut:

sub buka saya {
buka $fh saya, "@_"
atau die "Tidak dapat membuka '@_': $!";
kembalikan $fj;
}

{
$f saya = buka saya("
cetak <$f>;
# $f secara implisit ditutup di sini
}

Buka() dengan lebih dari dua argumen
If Buka() melewati tiga argumen, bukan dua, argumen kedua digunakan sebagai
mode dan argumen ketiga dianggap sebagai nama file. Ini terutama berguna untuk
melindungi terhadap perilaku sihir yang tidak diinginkan dari bentuk dua argumen tradisional. Melihat
"buka" di perlfunc.

64-bit mendukung
Platform apa pun yang memiliki bilangan bulat 64-bit

(1) asli sebagai longs atau ints
(2) melalui flag compiler khusus
(3) menggunakan long long atau int64_t

dapat menggunakan "quads" (bilangan bulat 64-bit) sebagai berikut:

· konstanta (desimal, heksadesimal, oktal, biner) dalam kode

· argumen untuk okt() dan segi enam()

· argumen untuk mencetak(), cetakf() dan lari cepat() (awalan bendera ll, L, q)

· dicetak seperti itu

· mengemas() dan membongkar() format "q" dan "Q"

· dalam aritmatika dasar: + - * / % (CATATAN: beroperasi mendekati batas bilangan bulat
nilai dapat menghasilkan hasil yang mengejutkan)

· dalam aritmatika bit: & | ^ ~ << >> (CATATAN: ini dulu dipaksa menjadi 32 bit lebar
tetapi sekarang beroperasi pada lebar asli penuh.)

· vektor()

Perhatikan bahwa kecuali Anda memiliki kasus (a) Anda harus mengonfigurasi dan mengkompilasi Perl menggunakan
bendera Konfigurasi -Duse64bitint.

CATATAN: Bendera Konfigurasi -Duselonglong dan -Duse64bits telah
usang. Gunakan -Duse64bitint sebagai gantinya.

Sebenarnya ada dua mode 64-bitness: yang pertama dicapai dengan menggunakan Configure
-Duse64bitint dan yang kedua menggunakan Configure -Duse64bitall. Bedanya itu
yang pertama minimal dan yang kedua maksimal. Yang pertama bekerja di lebih banyak tempat daripada
kedua.

"use64bitint" hanya melakukan sebanyak yang diperlukan untuk memasukkan bilangan bulat 64-bit ke Perl (ini
mungkin berarti, misalnya, menggunakan "kerinduan panjang") sementara ingatan Anda mungkin masih terbatas pada 2
gigabyte (karena pointer Anda masih bisa 32-bit). Perhatikan bahwa nama "64bitint"
tidak menyiratkan bahwa kompiler C Anda akan menggunakan "int" 64-bit (mungkin, tetapi tidak)
harus): "use64bitint" berarti Anda akan dapat memiliki skalar lebar 64 bit
nilai-nilai.

"use64bitall" berjalan sepenuhnya dengan mencoba mengganti juga bilangan bulat (jika bisa),
rindu (dan pointer) menjadi 64-bit. Ini dapat membuat lebih banyak biner yang tidak kompatibel
Perl than -Duse64bitint: executable yang dihasilkan mungkin tidak berjalan sama sekali dalam kotak 32-bit, atau
Anda mungkin harus mem-boot ulang/mengkonfigurasi ulang/membangun kembali sistem operasi Anda agar sadar 64-bit.

Sistem 64-bit asli seperti Alpha dan Cray tidak membutuhkan -Duse64bitint atau -Duse64bitall.

Last but not least: perhatikan bahwa karena kebiasaan Perl untuk selalu menggunakan angka floating point,
quads masih tidak bilangan bulat benar. Ketika paha depan melebihi batasnya
(0...18_446_744_073_709_551_615 unsigned,
-9_223_372_036_854_775_808...9_223_372_036_854_775_807 signed), they are silently promoted
ke angka floating point, setelah itu mereka akan mulai kehilangan presisi (di bawahnya
angka).

CATATAN: Dukungan 64-bit masih eksperimental di sebagian besar platform.
Dukungan yang ada hanya mencakup model data LP64. Secara khusus,
Model data LLP64 belum didukung. Perpustakaan dan sistem 64-bit
API di banyak platform belum stabil--jarak tempuh Anda mungkin berbeda.

Besar fillet mendukung
Jika Anda memiliki sistem file yang mendukung "file besar" (file lebih besar dari 2 gigabyte), Anda
mungkin sekarang juga dapat membuat dan mengaksesnya dari Perl.

CATATAN: Tindakan default adalah mengaktifkan dukungan file besar, jika
tersedia di platform.

Jika dukungan file besar aktif, dan Anda memiliki konstanta Fcntl O_LARGEFILE,
O_LARGEFILE secara otomatis ditambahkan ke bendera buka sistem().

Berhati-hatilah bahwa kecuali sistem file Anda juga mendukung "file jarang" yang berusaha untuk sekian
petabyte mungkin tidak disarankan.

Perhatikan bahwa selain memerlukan sistem file yang tepat untuk melakukan file besar, Anda juga dapat:
perlu menyesuaikan per-proses Anda (atau per-sistem Anda, atau per-proses-grup, atau per-pengguna-
group) batas ukuran file maksimum sebelum menjalankan skrip Perl yang mencoba menangani file besar,
terutama jika Anda berniat untuk menulis file seperti itu.

Terakhir, selain batas ukuran file maksimum grup proses/proses Anda, Anda mungkin memiliki
batas kuota pada sistem file Anda yang menghentikan Anda (id pengguna atau id grup pengguna Anda) dari
menggunakan file besar.

Menyesuaikan batas proses/pengguna/grup/sistem file/sistem operasi Anda berada di luar cakupan
dari bahasa inti Perl. Untuk batas proses, Anda dapat mencoba meningkatkan batas menggunakan
perintah batas/batas/ulimit shell sebelum menjalankan Perl. BSD::Ekstensi sumber daya (bukan
disertakan dengan distribusi Perl standar) mungkin juga berguna, ia menawarkan
antarmuka getrlimit/setrlimit yang dapat digunakan untuk menyesuaikan batas penggunaan sumber daya proses,
termasuk batas ukuran file maksimum.

Panjang ganda
Dalam beberapa sistem Anda mungkin dapat menggunakan ganda panjang untuk meningkatkan jangkauan dan presisi dari
nomor floating point presisi ganda Anda (yaitu, nomor Perl). Gunakan Konfigurasi
-Duselongdouble untuk mengaktifkan dukungan ini (jika tersedia).

"lagi sedikit"
Anda dapat "Mengonfigurasi -Dusemorebits" untuk mengaktifkan dukungan 64-bit dan double panjang
Dukungan.

ditingkatkan mendukung untuk menyortir() subrutin
Subrutin Perl dengan prototipe "($$)", dan XSUB secara umum, sekarang dapat digunakan sebagai pengurutan
subrutin. Dalam kedua kasus, dua elemen yang akan dibandingkan dilewatkan seperti biasa
parameter di @_. Lihat "urutkan" di perlfunc.

Untuk subrutin pengurutan yang tidak memiliki prototipe, perilaku historis dalam melewatkan elemen menjadi
dibandingkan karena variabel global $a dan $b tetap tidak berubah.

"menyortir $koderef @foo" diizinkan
menyortir() tidak menerima referensi subrutin sebagai fungsi perbandingan sebelumnya
versi. Ini sekarang diizinkan.

File menggelembung diimplementasikan internal
Perl sekarang menggunakan implementasi File::Glob dari gumpal() operator secara otomatis. Ini
menghindari penggunaan proses csh eksternal dan masalah yang terkait dengannya.

CATATAN: Ini saat ini merupakan fitur eksperimental. Antarmuka dan
implementasi dapat berubah.

Bantuan untuk TARIF blok
Selain "MULAI", "INIT", "AKHIR", "HANCURKAN" dan "AUTOLOAD", subrutin bernama "CHECK"
sekarang istimewa. Ini diantrekan selama kompilasi dan berperilaku mirip dengan blok END,
kecuali mereka dipanggil di akhir kompilasi daripada di akhir eksekusi.
Mereka tidak bisa dipanggil secara langsung.

POSIX karakter kelas sintaksis [: :] didukung
Misalnya untuk mencocokkan karakter alfabet gunakan /[[:alpha:]]/. Lihat perlre untuk detailnya.

Lebih baik pseudo-acak jumlah generator
Di 5.005_0x dan sebelumnya, perl's acak() fungsi menggunakan pustaka C baris(3) fungsi. Sebagai
dari 5.005_52, Konfigurasikan pengujian untuk dan48(), acak(), dan acak() (dalam urutan itu) dan pilih
yang pertama ditemukan.

Perubahan ini akan menghasilkan angka acak yang lebih baik dari acak().

peningkatan "qw//" operator
Operator "qw//" sekarang dievaluasi pada waktu kompilasi menjadi daftar yang benar alih-alih menjadi
diganti dengan panggilan run time ke "split()". Ini menghilangkan perilaku yang membingungkan dari
"qw//" dalam konteks skalar, yang mewarisi perilaku itu dari membagi().

Demikian:

$foo = ($bar) = qw(abc); print "$foo|$bar\n";

sekarang dengan benar mencetak "3|a", alih-alih "2|a".

Lebih baik kasus terburuk laku of hash
Perubahan kecil dalam algoritma hashing telah diterapkan untuk meningkatkan
distribusi bit urutan yang lebih rendah dalam nilai hash. Ini diharapkan menghasilkan lebih baik
kinerja pada kunci yang urutan berulang.

mengemas() format 'Z' didukung
Jenis format baru 'Z' berguna untuk mengemas dan membongkar string yang diakhiri null. Melihat
"paket" di perlfunc.

mengemas() format pengubah '!' didukung
Pengubah jenis format baru '!' berguna untuk mengemas dan membongkar celana pendek asli, int,
dan rindu. Lihat "paket" di perlfunc.

mengemas() dan membongkar() mendukung terhitung string
Karakter template '/' dapat digunakan untuk menentukan jenis string terhitung yang akan dikemas atau
dibongkar. Lihat "paket" di perlfunc.

komentar in mengemas() template
Karakter '#' dalam template memperkenalkan komentar hingga akhir baris. Ini
memfasilitasi dokumentasi mengemas() template.

Lemah referensi
Di Perl versi sebelumnya, Anda tidak dapat menyimpan objek dalam cache agar objek tersebut dapat dihapus
jika referensi terakhir dari luar cache dihapus. Referensi dalam cache akan
mengadakan hitungan referensi pada objek dan objek tidak akan pernah dihancurkan.

Masalah akrab lainnya adalah dengan referensi melingkar. Ketika sebuah objek mereferensikan dirinya sendiri,
jumlah referensinya tidak akan pernah turun ke nol, dan tidak akan dihancurkan sampai
program akan segera keluar.

Referensi yang lemah menyelesaikan ini dengan memungkinkan Anda untuk "melemahkan" referensi apa pun, yaitu, membuatnya tidak
menghitung menuju jumlah referensi. Ketika referensi non-lemah terakhir ke suatu objek adalah
dihapus, objek dihancurkan dan semua referensi lemah ke objek adalah
secara otomatis undef-ed.

Untuk menggunakan fitur ini, Anda memerlukan paket Devel::WeakRef dari CPAN, yang berisi:
dokumentasi tambahan.

CATATAN: Ini adalah fitur eksperimental. Detail dapat berubah.

Biner nomor didukung
Angka biner sekarang didukung sebagai literal, dalam format s?printf, dan "oct()":

$jawaban = 0b101010;
printf "Jawabannya adalah: %b\n", oct("0b101010");

Nilai subrutin
Subrutin sekarang dapat mengembalikan nilai yang dapat dimodifikasi. Lihat "Lvalue subrutin" di perlsub.

CATATAN: Ini adalah fitur eksperimental. Detail dapat berubah.

Beberapa panah mungkin be dihilangkan in panggilan melalui referensi
Perl sekarang memungkinkan panah untuk dihilangkan dalam banyak konstruksi yang melibatkan panggilan subrutin
melalui referensi. Misalnya, "$foo[10]->('foo')" sekarang dapat ditulis
"$foo[10]('foo')". Ini agak mirip dengan bagaimana panah dapat dihilangkan dari
"$foo[10]->{'foo'}". Namun perhatikan, bahwa panah masih diperlukan untuk
"foo(10)->('bilah')".

Boolean tugas operator adalah sah nilai-nilai
Konstruksi seperti "($a ||= 2) += 1" sekarang diizinkan.

ada() is didukung on subrutin nama
ada() builtin sekarang bekerja pada nama subrutin. Subrutin dianggap ada
jika telah dideklarasikan (walaupun secara implisit). Lihat "ada" di perlfunc untuk contoh.

ada() dan menghapus() adalah didukung on susunan elemen
ada() dan menghapus() builtin sekarang bekerja pada array sederhana juga. Tingkah lakunya adalah
mirip dengan yang ada pada elemen hash.

ada() dapat digunakan untuk memeriksa apakah elemen array telah diinisialisasi. Ini menghindari
mengotomatiskan elemen array yang tidak ada. Jika array terikat, maka ADA() metode
dalam paket terikat yang sesuai akan dipanggil.

menghapus() dapat digunakan untuk menghapus elemen dari array dan mengembalikannya. elemen larik
pada posisi itu kembali ke keadaan tidak diinisialisasi, sehingga pengujian untuk elemen yang sama
dengan ada() akan kembali palsu. Jika elemennya adalah yang paling akhir, maka
ukuran array juga menyusut hingga elemen tertinggi yang diuji benar untuk ada(), atau
0 jika tidak ada yang ditemukan. Jika array terikat, maka MENGHAPUS() metode dalam yang sesuai
paket terikat akan dipanggil.

Lihat "ada" di perlfunc dan "hapus" di perlfunc untuk contoh.

Pseudo-hash kerja lebih baik
Dereferencing beberapa jenis nilai referensi dalam pseudo-hash, seperti "$ph->{foo}[1]",
tidak sengaja tidak diizinkan. Ini telah diperbaiki.

Ketika diterapkan ke elemen pseudo-hash, ada() sekarang melaporkan apakah nilai yang ditentukan
ada, bukan hanya jika kuncinya valid.

menghapus() sekarang bekerja pada pseudo-hash. Ketika diberi elemen pseudo-hash atau irisan itu dihapus
nilai yang sesuai dengan kunci (tetapi bukan kunci itu sendiri). Lihat "Hash semu:
Menggunakan array sebagai hash" di perlref.

Irisan hash semu dengan kunci konstan kini dioptimalkan untuk pencarian array pada waktu kompilasi.

Daftar tugas ke irisan pseudo-hash sekarang didukung.

Pragma "bidang" sekarang menyediakan cara untuk membuat hash semu, melalui bidang::baru() dan
bidang::fash(). Lihat bidang.

CATATAN: Tipe data pseudo-hash masih bersifat eksperimental.
Membatasi diri pada elemen antarmuka yang disediakan oleh
bidang pragma akan memberikan perlindungan dari setiap perubahan di masa depan.

secara otomatis pembilasan of keluaran buffer
garpu(), exec (), sistem(), qx//, dan pipa Buka()s sekarang flush buffer dari semua file yang dibuka untuk
output ketika operasi dicoba. Ini sebagian besar menghilangkan buffering yang membingungkan
kecelakaan yang diderita oleh pengguna yang tidak menyadari bagaimana Perl menangani I/O secara internal.

Ini tidak didukung pada beberapa platform seperti Solaris di mana benar benar
implementasi fflush(NULL) tidak tersedia.

Lebih baik diagnostik on tak berarti pegangan file operasi
Konstruksi seperti "buka ( )" dan "tutup( )" adalah kesalahan waktu kompilasi. Mencoba untuk
read dari filehandles yang dibuka hanya untuk menulis sekarang akan menghasilkan peringatan (seperti
menulis ke filehandles read-only tidak).

Where bisa jadi, disangga data dibuang dari tertipu memasukkan pegangan file
"buka(BARU, "<& LAMA")" sekarang mencoba membuang data apa pun yang sebelumnya dibaca dan
buffer di "OLD" sebelum menipu pegangan. Pada platform di mana melakukan ini diperbolehkan, the
operasi baca berikutnya pada "BARU" akan mengembalikan data yang sama dengan operasi yang sesuai pada
"TUA". Sebelumnya, itu akan mengembalikan data dari awal disk berikut
blokir saja.

eof() memiliki itu sama tua sihir as <>
"eof()" akan mengembalikan nilai true jika belum ada upaya untuk membaca dari "<>" dilakukan. "eof()" memiliki
telah diubah untuk memiliki sedikit keajaiban, sekarang membuka file "<>".

mode bin() bisa be bekas untuk set : crlf dan :mentah mode
mode bin() sekarang menerima argumen kedua yang menentukan disiplin untuk pegangan di
pertanyaan. Dua pseudo-disiplin ":raw" dan ":crlf" saat ini didukung di DOS-
platform turunan. Lihat "binmode" di perlfunc dan buka.

"-T" tes file mengakui UTF-8 dikodekan arsip as "teks"
Algoritme yang digunakan untuk uji file "-T" telah ditingkatkan untuk mengidentifikasi UTF-8 dengan benar
konten sebagai "teks".

sistem(), backtick dan pipa Buka sekarang mencerminkan exec () kegagalan
Pada Unix dan platform serupa, sistem(), qx() dan open(FOO, "cmd |") dll., diimplementasikan
melalui garpu() dan exec (). Ketika mendasari exec () gagal, versi sebelumnya tidak melaporkan
kesalahan dengan benar, karena exec () terjadi dalam proses yang berbeda.

Proses anak sekarang berkomunikasi dengan orang tua tentang kesalahan dalam meluncurkan
perintah eksternal, yang memungkinkan konstruksi ini kembali dengan nilai kesalahan yang biasa dan
tetapkan $!.

peningkatan diagnostik
Nomor baris tidak lagi ditekan (dalam keadaan yang paling mungkin) selama global
fase kehancuran.

Diagnostik yang dipancarkan dari kode yang berjalan di utas selain utas utama sekarang
disertai dengan ID utas.

Karakter nol yang disematkan dalam diagnostik sekarang benar-benar muncul. Mereka biasa memotong
pesan di versi sebelumnya.

$foo::a dan $foo::b sekarang dibebaskan dari peringatan "kemungkinan salah ketik" hanya jika menyortir() is
ditemui dalam paket "foo".

Pelarian abjad yang tidak dikenal ditemui saat mengurai konstruksi kutipan sekarang menghasilkan a
peringatan, karena mereka dapat mengambil semantik baru di versi Perl yang lebih baru.

Banyak diagnostik sekarang melaporkan operasi internal di mana peringatan itu diprovokasi, seperti
begitu:

Penggunaan nilai yang tidak diinisialisasi dalam rangkaian (.) pada (eval 1) baris 1.
Penggunaan nilai yang tidak diinisialisasi dalam cetakan pada (eval 1) baris 1.

Diagnostik yang terjadi dalam eval juga dapat melaporkan file dan nomor baris di mana:
eval terletak, selain nomor urut eval dan nomor baris di dalam
mengevaluasi teks itu sendiri. Sebagai contoh:

Tidak cukup argumen untuk skalar di (eval 4)[newlib/perl5db.pl:1411] baris 2, di EOF

Diagnostik mengikuti STDERR
Output diagnostik sekarang menuju ke file mana pun yang ditunjuk oleh pegangan "STDERR", sebagai gantinya
dari selalu pergi ke "stderr" perpustakaan runtime C yang mendasarinya.

More konsisten close-on-exec laku
Pada sistem yang mendukung flag close-on-exec pada filehandles, flag sekarang disetel untuk semua
pegangan dibuat oleh pipa(), pasangan soket(), stopkontak (), dan menerima(), jika itu dijamin oleh
nilai $^F yang mungkin berlaku. Versi sebelumnya mengabaikan untuk menyetel tanda untuk
menangani dibuat dengan operator ini. Lihat "pipa" di perlfunc, "socketpair" di perlfunc,
"socket" di perlfunc, "accept" di perlfunc, dan "$^F" di perlvar.

penulisan sistem() kemudahan penggunaan
Argumen panjang "syswrite()" telah menjadi opsional.

Lebih baik sintaksis pemeriksaan on di dalam kurung unary operator
Ekspresi seperti:

print didefinisikan(&foo,&bar,&baz);
print uc("foo", "bar", "baz");
undef($foo,&bar);

dulu secara tidak sengaja diizinkan di versi sebelumnya, dan menghasilkan perilaku yang tidak terduga.
Beberapa menghasilkan peringatan tambahan bila digunakan dengan cara ini; yang lain diam-diam melakukan kesalahan
benda.

Bentuk tanda kurung dari sebagian besar operator unary yang mengharapkan argumen tunggal sekarang memastikan
bahwa mereka tidak dipanggil dengan lebih dari satu argumen, membuat kasus yang ditunjukkan di atas sintaks
kesalahan. Perilaku yang biasa dilakukan:

cetak ditentukan &foo, &bar, &baz;
print uc "foo", "bar", "baz";
undef $foo, &bar;

tetap tidak berubah. Lihat perlop.

Bit operator mendukung penuh asli bilangan bulat lebar
Operator bit (& | ^ ~ << >>) sekarang beroperasi pada lebar integral asli penuh (tepatnya
ukuran yang tersedia di $Config{ivsize}). Misalnya, jika platform Anda adalah
asli 64-bit atau jika Perl telah dikonfigurasi untuk menggunakan bilangan bulat 64-bit, operasi ini
berlaku untuk 8 byte (berlawanan dengan 4 byte pada platform 32-bit). Untuk portabilitas, pastikan untuk
menutupi kelebihan bit dalam hasil unary "~", misalnya, "~$x & 0xffffffff".

peningkatan keamanan fitur
Operasi yang lebih berpotensi tidak aman mencemari hasil mereka untuk keamanan yang lebih baik.

Bidang "passwd" dan "shell" dikembalikan oleh berangkat(), dapatkanpwnam(), dan dapatkanpwuid() adalah
sekarang tercemar, karena pengguna dapat memengaruhi kata sandi terenkripsi dan shell login mereka sendiri.

Variabel yang dimodifikasi oleh kepingan(), dan pesan yang dikembalikan oleh pesan singkat() (dan objek-
antarmuka berorientasi IPC::SysV::Msg::rcv) juga tercemar, karena lainnya tidak tepercaya
proses dapat memodifikasi pesan dan segmen memori bersama untuk tujuan jahat mereka sendiri.

More fungsionil kata-kata kosong prototipe (*)
Prototipe bareword telah dirasionalisasi untuk memungkinkan mereka digunakan untuk menimpa builtin
yang menerima kata-kata kosong dan menafsirkannya dengan cara khusus, seperti "memerlukan" atau "melakukan".

Argumen yang diprototipekan sebagai "*" sekarang akan terlihat di dalam subrutin sebagai argumen sederhana
skalar atau sebagai referensi ke typeglob. Lihat "Prototipe" di perlsub.

"memerlukan" dan "melakukan" mungkin be ditimpa
Operasi "memerlukan" dan "melakukan 'file'" dapat ditimpa secara lokal dengan mengimpor subrutin dari
nama yang sama ke dalam paket saat ini (atau secara global dengan mengimpornya ke dalam
INTI::GLOBAL:: ruang nama). Mengesampingkan "memerlukan" juga akan memengaruhi "penggunaan", asalkan
override terlihat pada waktu kompilasi. Lihat "Mengganti Fungsi Bawaan" di perlsub.

$^X variabel mungkin sekarang memiliki nama lagi dari satu karakter
Sebelumnya, $^X identik dengan ${"\cX"}, tetapi $^XY adalah kesalahan sintaks. Sekarang variabel
nama yang dimulai dengan karakter kontrol mungkin panjangnya sewenang-wenang. Namun, untuk
alasan kompatibilitas, variabel-variabel ini harus ditulis dengan kurung kurawal eksplisit, sebagai "${^XY}"
Misalnya. "${^XYZ}" sinonim dengan ${"\cXYZ"}. Nama variabel dengan lebih dari satu
karakter kontrol, seperti "${^XY^Z}", adalah ilegal.

Sintaks lama tidak berubah. Seperti sebelumnya, `^X' dapat berupa kontrol literal-X
karakter atau urutan dua karakter `caret' plus `X'. Ketika kurung kurawal dihilangkan,
nama variabel berhenti setelah karakter kontrol. Jadi "$^XYZ" terus menjadi sinonim
dengan "$^X . "YZ"" seperti sebelumnya.

Seperti sebelumnya, variabel leksikal mungkin tidak memiliki nama yang diawali dengan karakter kontrol. Sebagai
sebelumnya, variabel yang namanya dimulai dengan karakter kontrol selalu dipaksa untuk berada di
paket 'utama'. Semua variabel tersebut dicadangkan untuk ekstensi di masa mendatang, kecuali yang
dimulai dengan "^_", yang dapat digunakan oleh program pengguna dan dijamin tidak akan diperoleh
arti khusus dalam versi Perl yang akan datang.

New variabel $^C mencerminkan "-C" saklar
$^C memiliki nilai boolean yang mencerminkan apakah Perl dijalankan dalam mode kompilasi saja (mis
melalui sakelar "-c"). Karena blok BEGIN dieksekusi dalam kondisi seperti itu, ini
variabel memungkinkan kode perl untuk menentukan apakah tindakan yang masuk akal hanya selama normal
berjalan dijamin. Lihat perlvar.

New variabel $^V mengandung Perl versi as a string
$^V berisi nomor versi Perl sebagai string yang terdiri dari karakter yang ordinalnya
cocok dengan nomor versi, yaitu v5.6.0. Ini dapat digunakan dalam perbandingan string.

Lihat "Dukungan untuk string yang direpresentasikan sebagai vektor ordinal" sebagai contoh.

Opsional Y2K peringatan
Jika Perl dibangun dengan makro cpp "PERL_Y2KWARN" yang ditentukan, itu memancarkan peringatan opsional
saat menggabungkan angka 19 dengan angka lain.

Perilaku ini harus diaktifkan secara khusus saat menjalankan Konfigurasi. Melihat INSTALL dan
README.Y2K.

Array sekarang selalu menambah ke kutipan ganda string
Dalam string yang dikutip ganda, array sekarang diinterpolasi, apa pun yang terjadi. Tingkah laku sebelumnya
versi Perl 5 adalah bahwa array akan diinterpolasi menjadi string jika array telah
disebutkan sebelum string dikompilasi, dan jika tidak, Perl akan memunculkan kompilasi yang fatal
kesalahan waktu. Dalam versi 5.000 hingga 5.003, kesalahannya adalah

Literal @example sekarang membutuhkan garis miring terbalik

Dalam versi 5.004_01 hingga 5.6.0, kesalahannya adalah

Dalam string, @example sekarang harus ditulis sebagai \@example

Idenya di sini adalah untuk membuat orang terbiasa menulis "fred\@example.com" ketika mereka
menginginkan tanda "@" literal, seperti yang selalu mereka tulis "Kembalikan \$5 saya" ketika
mereka menginginkan tanda "$" secara harfiah.

Dimulai dengan 5.6.1, saat Perl sekarang melihat tanda "@" dalam string bertanda kutip ganda, itu selalu
mencoba untuk menginterpolasi array, terlepas dari apakah array telah digunakan atau tidak atau
sudah dideklarasikan. Kesalahan fatal telah diturunkan ke peringatan opsional:

Kemungkinan interpolasi yang tidak diinginkan dari @contoh dalam string

Ini memperingatkan Anda bahwa "fred@contoh.com" akan berubah menjadi "fred.com" jika tidak
garis miring terbalik "@". Melihat http://perl.plover.com/at-error.html untuk lebih jelasnya tentang
sejarah di sini.

@- dan @+ memberikan awal/akhir offset of regex subpertandingan
Variabel ajaib baru @- dan @+ masing-masing memberikan offset awal dan akhir,
dari $&, $1, $2, dll. Lihat perlvar untuk detailnya.

Modul dan Pragmatis


Modul
atribut
Saat digunakan secara internal oleh Perl sebagai pragma, modul ini juga menyediakan cara untuk mengambil
atribut subrutin dan variabel. Lihat atribut.

B The Perl Compiler suite telah dikerjakan ulang secara ekstensif untuk rilis ini. Lebih banyak lagi
suite uji Perl standar lolos saat dijalankan di bawah Kompilator, tetapi masih ada
cara signifikan untuk mencapai kualitas produksi yang dapat dieksekusi yang dikompilasi.

CATATAN: Compiler suite tetap sangat eksperimental. Itu
kode yang dihasilkan mungkin tidak benar, bahkan ketika berhasil dijalankan
tanpa kesalahan.

patokan
Secara keseluruhan, hasil Benchmark menunjukkan kesalahan rata-rata yang lebih rendah dan akurasi waktu yang lebih baik.

Anda sekarang dapat menjalankan tes untuk n detik alih-alih menebak jumlah tes yang tepat untuk
run: misalnya, timethese(-5, ...) akan menjalankan setiap kode setidaknya selama 5 detik CPU. Nol sebagai
"jumlah pengulangan" berarti "setidaknya selama 3 detik CPU". Format keluaran memiliki
juga berubah. Sebagai contoh:

gunakan Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})

sekarang akan menampilkan sesuatu seperti ini:

Benchmark: menjalankan a, b, masing-masing selama minimal 5 detik CPU...
a: 5 detik jam dinding (5.77 usr + 0.00 sys = 5.77 CPU) @ 200551.91/s (n=1156516)
b: 4 detik jam dinding (5.00 usr + 0.02 sys = 5.02 CPU) @ 159605.18/s (n=800686)

Fitur baru: "masing-masing untuk setidaknya N CPU detik...", "jam dinding detik", dan "@
operasi/CPU detik (n=operasi)".

waktu ini() sekarang mengembalikan referensi ke hash objek Benchmark yang berisi tes
hasil, mengetikkan nama-nama tes.

waktu ini() sekarang mengembalikan bidang iterasi di objek hasil Benchmark alih-alih
0.

waktu ini(), waktu ini(), dan yang baru cmp ini() (lihat di bawah) juga dapat mengambil format
penentu 'tidak ada' untuk menekan output.

Fungsi baru hitung itu() seperti waktu() kecuali itu membutuhkan WAKTU, bukan
sebuah COUNT.

Fungsi baru cmp ini() mencetak bagan yang membandingkan hasil setiap tes yang dikembalikan
dari waktu ini() panggilan. Untuk setiap kemungkinan pasangan tes, persentase kecepatan
perbedaan (iters/detik atau detik/iter) ditampilkan.

Untuk detail lainnya, lihat Tolok Ukur.

ByteLoader
ByteLoader adalah ekstensi khusus untuk menghasilkan dan menjalankan bytecode Perl. Melihat
Pemuat Byte.

konstan
Referensi sekarang dapat digunakan.

Versi baru juga memungkinkan garis bawah utama dalam nama konstan, tetapi tidak mengizinkan a
garis bawah di depan ganda (seperti dalam "__LINE__"). Beberapa nama lain tidak diizinkan atau
diperingatkan, termasuk BEGIN, END, dll. Beberapa nama yang dipaksa menjadi utama::
digunakan untuk gagal diam-diam dalam beberapa kasus; sekarang mereka fatal (di luar main::) dan
peringatan opsional (di dalam main::). Kemampuan untuk mendeteksi apakah suatu konstanta memiliki
telah ditetapkan dengan nama yang diberikan telah ditambahkan.

Lihat konstan.

nama panggilan
Pragma ini mengimplementasikan pelarian string "\N". Lihat charname.

Data :: Dumper
Pengaturan "Maxdepth" dapat ditentukan untuk menghindari menjelajah terlalu dalam ke data yang dalam
struktur. Lihat Data::Dumper.

Implementasi XSUB dari Membuang() sekarang secara otomatis dipanggil jika pengaturan "Useqq"
tidak sedang digunakan.

Membuang objek "qr//" berfungsi dengan benar.

DB "DB" adalah modul eksperimental yang memaparkan abstraksi bersih ke debugging Perl
API.

DB_File
DB_File sekarang dapat dibuat dengan Berkeley DB versi 1, 2 atau 3. Lihat
"ext/DB_File/Perubahan".

Kembangkan::DProf
Devel::DPof, profiler kode sumber Perl telah ditambahkan. Lihat Kembangkan::DProf dan
dprofpp.

Pengembang::Mengintip
Modul Devel::Peek menyediakan akses ke representasi internal Perl
variabel dan data. Ini adalah alat debugging data untuk programmer XS.

Nilai sampah
Modul Dumpvalue menyediakan dump layar data Perl.

Dyna Loader
DynaLoader sekarang mendukung a dl_unload_file() berfungsi pada platform yang mendukung
membongkar objek bersama menggunakan dltutup().

Perl juga dapat secara opsional mengatur untuk membongkar semua objek bersama ekstensi yang dimuat oleh
Perl. Untuk mengaktifkan ini, buat Perl dengan opsi Konfigurasi
"-Accflags=-DDL_UNLOAD_ALL_AT_EXIT". (Ini mungkin berguna jika Anda menggunakan Apache dengan
mod_perl.)

Inggris
$PERL_VERSION sekarang singkatan dari $^V (nilai string) daripada $] (angka
nilai).

Env Env sekarang mendukung pengaksesan variabel lingkungan seperti PATH sebagai variabel array.

Fctl
Lebih banyak konstanta Fcntl ditambahkan: F_SETLK64, F_SETLKW64, O_LARGEFILE untuk file besar (lebih
dari 4GB) akses (CATATAN: O_LARGEFILE secara otomatis ditambahkan ke buka sistem() bendera jika
dukungan file besar telah dikonfigurasi, seperti default), penguncian Gratis/Net/OpenBSD
flag perilaku F_FLOCK, F_POSIX, Linux F_SHLCK, dan O_ACCMODE: topeng gabungan dari
O_RDONLY, O_WRONLY, dan O_RDWR. Itu mencari()/pencarian sistem() konstanta SEEK_SET, SEEK_CUR,
dan SEEK_END tersedia melalui tag ":seek". Itu chmod()/stat () S_IF* konstanta
dan fungsi S_IS* tersedia melalui tag ":mode".

File::Bandingkan
A bandingkan_teks() fungsi telah ditambahkan, yang memungkinkan fungsi perbandingan khusus.
Lihat File::Bandingkan.

Berkas::Temukan
File::Find now berfungsi dengan benar ketika ingin() fungsi dimuat secara otomatis atau a
referensi simbolis.

Bug yang menyebabkan File::Find kehilangan jejak direktori kerja saat memangkas atas-
direktori level telah diperbaiki.

File::Find now juga mendukung beberapa opsi lain untuk mengontrol perilakunya. Bisa
ikuti tautan simbolik jika opsi "ikuti" ditentukan. Mengaktifkan "no_chdir"
opsi akan membuat File :: Temukan lewati mengubah direktori saat ini saat berjalan
direktori. Bendera "untaint" dapat berguna saat dijalankan dengan pemeriksaan taint yang diaktifkan.

Lihat File::Temukan.

Berkas::Glob
Ekstensi ini mengimplementasikan globbing file bergaya BSD. Secara default, itu juga akan digunakan
untuk implementasi internal gumpal() operator. Lihat File::Glob.

Berkas::Spesifikasi
Metode baru telah ditambahkan ke modul File::Spec: devnull() mengembalikan nama
perangkat null (/ dev/null di Unix) dan tmpdir() nama direktori temp
(biasanya / Tmp di Unix). Sekarang ada juga metode untuk mengkonversi antara absolut dan
nama file relatif: abs2rel() dan rel2ab(). Untuk kompatibilitas dengan sistem operasi
yang menentukan nama volume di jalur file, jalur terpisah(), splitdir(), dan catdir()
metode telah ditambahkan.

File::Spec::Fungsi
Modul File::Spec::Functions yang baru menyediakan antarmuka fungsi ke File::Spec
modul. Memungkinkan singkatan

$nama lengkap = catfile($dir1, $dir2, $file);

alih-alih

$nama lengkap = File::Spec->catfile($dir1, $dir2, $file);

Getopt::Panjang
Getopt::Lisensi lama telah diubah untuk mengizinkan Lisensi Artistik Perl serta
GPL. Dulu hanya GPL, yang menghalangi aplikasi non-GPL yang diinginkan
untuk menggunakan Getopt::Long.

Getopt::Long mendorong penggunaan Pod::Usage untuk menghasilkan pesan bantuan. Sebagai contoh:

gunakan Getopt::Panjang;
gunakan Pod::Penggunaan;
$pria saya = 0;
$bantuan saya = 0;
GetOptions('help|?' => \$help, man => \$man) atau penggunaan pod2(2);
penggunaan pod2(1) jika $bantuan;
pod2usage(-exitstatus => 0, -verbose => 2) jika $man;

__AKHIR__

=kepala1 NAMA

sample - Menggunakan Getopt::Long dan Pod::Usage

=head1 SINOPSIS

contoh [opsi] [file ...]

Pilihan:
-bantuan pesan bantuan singkat
-man dokumentasi lengkap

=head1 OPSI

= lebih dari 8

=item B<-bantuan>

Cetak pesan bantuan singkat dan keluar.

=item B<-man>

Mencetak halaman manual dan keluar.

= kembali

=head1 DESKRIPSI

B akan membaca file input yang diberikan dan melakukan sesuatu
bermanfaat dengan isinya.

= potong

Lihat Pod::Penggunaan untuk detailnya.

Bug yang mencegah panggilan balik non-opsi <> ditetapkan sebagai yang pertama
argumen telah diperbaiki.

Untuk menentukan karakter < dan > sebagai permulaan opsi, gunakan ><. Namun, perhatikan bahwa
mengubah starter opsi sangat tidak digunakan lagi.

IO menulis() dan penulisan sistem() sekarang akan menerima bentuk argumen tunggal dari panggilan, untuk
konsistensi dengan Perl's penulisan sistem().

Anda sekarang dapat membuat IO::Socket::INET berbasis TCP tanpa memaksakan upaya koneksi.
Ini memungkinkan Anda untuk mengonfigurasi opsinya (seperti menjadikannya non-pemblokiran) dan kemudian memanggil
Menghubung() secara manual

Bug yang mencegah IO::Socket::protokol() accessor dari yang pernah mengembalikan
nilai yang benar telah diperbaiki.

IO::Socket::connect sekarang menggunakan IO non-pemblokiran alih-alih alarm() untuk melakukan koneksi
batas waktu.

IO::Socket::terima sekarang menggunakan Pilih() alih-alih alarm() untuk melakukan timeout.

IO::Socket::INET->new sekarang menetapkan $! benar pada kegagalan. $@ masih diatur untuk mundur
kompatibilitas.

JPL Java Perl Lingo sekarang didistribusikan dengan Perl. Lihat jpl/README untuk informasi lebih lanjut.

lib "gunakan lib" sekarang menyingkirkan entri duplikat yang tertinggal. "no lib" menghapus semua nama
entri.

Matematika::BigInt
Operasi bitwise "<<", ">>", "&", "|", dan "~" sekarang didukung di bigints.

Matematika::Kompleks
Metode pengakses Re, Im, arg, abs, rho, dan theta sekarang juga dapat bertindak sebagai mutator
(aksesor $z->Ulang(), mutasi $z->Re(3)).

Metode kelas "display_format" dan metode objek yang sesuai
"display_format", selain menerima hanya satu argumen, sekarang juga dapat menerima
hash parameter. Kunci yang dikenali dari hash parameter adalah "gaya", yang sesuai dengan
kasus satu parameter lama, dan dua parameter baru: "format", yaitu a
cetakf()string format -style (biasanya default ke "%.15g", Anda dapat kembali ke
default dengan menyetel string format ke "undef") yang digunakan untuk kedua bagian kompleks
number, dan "polar_pretty_print" (default ke true), yang mengontrol apakah suatu percobaan
dibuat untuk mencoba mengenali kelipatan kecil dan rasional dari pi (2pi, pi/2) pada
argumen (sudut) dari bilangan kompleks polar.

Perubahan yang berpotensi mengganggu adalah bahwa dalam konteks daftar kedua metode sekarang kembali itu
parameter hash, bukan hanya nilai parameter "style".

Matematika::Tiga
Sedikit tentang trigonometri radial (silinder dan bola), koordinat radial
konversi, dan jarak lingkaran besar ditambahkan.

Pod::Parser, Pod::InputObjects
Pod::Parser adalah kelas dasar untuk mem-parsing dan memilih bagian dari dokumentasi pod
dari aliran masukan. Modul ini menangani identifikasi paragraf pod dan
perintah di input dan menyerahkan paragraf yang diuraikan dan perintah ke yang ditentukan pengguna
metode yang bebas untuk menafsirkan atau menerjemahkannya sesuai keinginan mereka.

Pod::InputObjects mendefinisikan beberapa objek input yang dibutuhkan oleh Pod::Parser, dan untuk tingkat lanjut
pengguna Pod::Parser yang membutuhkan lebih banyak tentang perintah selain nama dan teksnya.

Pada rilis 5.6.0 dari Perl, Pod::Parser sekarang resmi disetujui "base parser
code" direkomendasikan untuk digunakan oleh semua penerjemah pod2xxx. Pod::Text (pod2text) dan
Pod::Man (pod2man) telah dikonversi untuk menggunakan Pod::Parser dan upaya untuk
convert Pod::HTML (pod2html) sedang berlangsung. Untuk pertanyaan atau komentar apa pun
tentang masalah dan utilitas penguraian dan penerjemahan pod, silakan gunakan
pod-people@perl.org milis.

Untuk informasi lebih lanjut, silakan lihat Pod::Parser dan Pod::InputObjects.

Pod::Pemeriksa, pemeriksa polong
Utilitas ini memeriksa file pod untuk sintaks yang benar, menurut perlpod. Jelas
kesalahan ditandai seperti itu, sementara peringatan dicetak untuk kesalahan yang mungkin terjadi
ditangani dengan anggun. Daftar periksa belum lengkap. Lihat Pod::Pemeriksa.

Pod::ParseUtils, Pod::Temukan
Modul-modul ini menyediakan seperangkat alat yang berguna terutama untuk penerjemah pod.
Pod::Temukan melintasi struktur direktori dan mengembalikan file pod yang ditemukan, bersama dengan mereka
nama kanonik (seperti "File::Spec::Unix"). Pod::ParseUtils berisi Pod::Daftar (berguna
untuk menyimpan informasi daftar pod), Pod::Hyperlink (untuk mengurai konten "L<>"
urutan) dan Pod::Cache (untuk menyimpan informasi tentang file pod, misalnya, node tautan).

Pod::Pilih, Podselect
Pod::Select adalah subclass dari Pod::Parser yang menyediakan fungsi bernama "pilihan pilihan()"
untuk memfilter bagian yang ditentukan pengguna dari dokumentasi pod mentah dari aliran input.
podselect adalah skrip yang menyediakan akses ke Pod::Pilih dari skrip lain untuk menjadi
digunakan sebagai penyaring. Lihat Pod::Pilih.

Pod::Penggunaan, pod2penggunaan
Pod::Usage menyediakan fungsi "pod2penggunaan()" untuk mencetak pesan penggunaan untuk Perl
skrip berdasarkan dokumentasi pod yang disematkan. Itu pod2penggunaan() fungsi umumnya
berguna untuk semua penulis skrip karena memungkinkan mereka menulis dan memelihara satu sumber
(pod) untuk dokumentasi, sehingga menghilangkan kebutuhan untuk membuat dan memelihara redundan
penggunaan teks pesan yang terdiri dari informasi yang sudah ada di pod.

Ada juga skrip pod2usage yang dapat digunakan dari jenis skrip lain untuk
mencetak pesan penggunaan dari pod (bahkan untuk skrip non-Perl dengan pod yang tertanam di
komentar).

Untuk detail dan contoh, silakan lihat Pod::Usage.

Pod::Teks dan Pod::Man
Pod::Teks telah ditulis ulang untuk menggunakan Pod::Parser. Ketika pod2teks() masih tersedia
untuk kompatibilitas mundur, modul sekarang memiliki antarmuka pilihan baru. Melihat
Pod::Teks untuk detailnya. Modul Pod::Text baru dengan mudah disubklasifikasikan untuk tweak
ke output, dan dua subclass tersebut (Pod::Text::Termcap untuk huruf tebal gaya halaman manual dan
menggarisbawahi menggunakan informasi termcap, dan Pod::Text::Color untuk markup dengan warna ANSI
urutan) sekarang standar.

pod2man telah diubah menjadi modul, Pod::Man, yang juga menggunakan Pod::Parser. Dalam
proses, beberapa bug luar biasa terkait dengan kutipan di header bagian, kutipan dari
kode lolos, dan daftar bersarang telah diperbaiki. pod2man sekarang menjadi skrip pembungkus
sekitar modul ini.

SDBM_File
Metode EXISTS telah ditambahkan ke modul ini (dan sdbm_ada() telah ditambahkan ke
perpustakaan sdbm yang mendasarinya), jadi sekarang seseorang dapat memanggil ada pada hash terikat SDBM_File dan
mendapatkan hasil yang benar, bukan kesalahan runtime.

Bug yang mungkin menyebabkan kehilangan data ketika lebih dari satu blok disk dibaca
dari database dalam satu MENGAMBIL() telah diperbaiki.

Sis::Syslog
Sys::Syslog sekarang menggunakan XSUBs untuk mengakses fasilitas dari syslog.h sehingga tidak memerlukan lagi
syslog.ph ada.

Sys::Nama host
Sys::Hostname sekarang menggunakan XSUB untuk memanggil perpustakaan C dapatkan namahost() or nama kamu() jika mereka
ada.

Istilah::ANSIColor
Term::ANSIColor adalah modul yang sangat sederhana untuk menyediakan akses yang mudah dan dapat dibaca ke
Warna ANSI dan menyoroti urutan pelarian, didukung oleh sebagian besar terminal ANSI
emulator. Sekarang sudah termasuk standar.

Waktu::Lokal
waktu lokal() dan waktu () fungsi yang digunakan untuk mengembalikan hasil palsu secara diam-diam ketika
tanggal berada di luar kisaran bilangan bulat mesin. Mereka sekarang secara konsisten menggaok() jika
tanggal berada dalam rentang yang tidak didukung.

Win32
Nilai pengembalian kesalahan dalam konteks daftar telah diubah untuk semua fungsi yang kembali
daftar nilai. Sebelumnya fungsi-fungsi ini mengembalikan daftar dengan satu elemen
"undef" jika terjadi kesalahan. Sekarang fungsi-fungsi ini mengembalikan daftar kosong di ini
situasi. Ini berlaku untuk fungsi berikut:

Win32::FsType
Win32::GetOSVersion

Fungsi yang tersisa tidak berubah dan terus mengembalikan "undef" pada kesalahan bahkan dalam
daftar konteks.

Fungsi Win32::SetLastError(ERROR) telah ditambahkan sebagai pelengkap dari
Win32::DapatkanKesalahan Terakhir() fungsi.

Win32::GetFullPathName(FILENAME) yang baru mengembalikan nama path absolut lengkap untuk
FILENAME dalam konteks skalar. Dalam konteks daftar ia mengembalikan daftar dua elemen yang berisi
nama direktori yang sepenuhnya memenuhi syarat dan nama file. Lihat Win32.

XSLloader
Ekstensi XSLoader adalah alternatif yang lebih sederhana untuk DynaLoader. Lihat XSLloader.

Filter DBM
Fitur baru yang disebut "Filter DBM" telah ditambahkan ke semua modul DBM--DB_File,
GDBM_File, NDBM_File, ODBM_File, dan SDBM_File. Filter DBM menambahkan empat metode baru untuk
setiap modul DBM:

filter_toko_kunci
filter_toko_nilai
filter_fetch_key
filter_fetch_value

Ini dapat digunakan untuk memfilter pasangan nilai kunci sebelum pasangan ditulis ke
database atau hanya setelah mereka dibaca dari database. Lihat perldbmfilter untuk lebih lanjut
informasi.

Pragmatis
"use attrs" sekarang sudah usang, dan hanya disediakan untuk kompatibilitas mundur. Telah
diganti dengan sintaks "sub : atribut". Lihat "Atribut Subrutin" di perlsub dan
atribut.

Pragma peringatan leksikal, "gunakan peringatan;", untuk mengontrol peringatan opsional. Lihat perllexwarn.

"gunakan filetest" untuk mengontrol perilaku filetests ("-r" "-w" ...). Saat ini hanya satu
subpragma diimplementasikan, "gunakan 'akses' filetest;", yang menggunakan mengakses(2) atau setara dengan
periksa izin alih-alih menggunakan Stat(2) seperti biasa. Ini penting dalam sistem file di mana
ada ACL (daftar kontrol akses): Stat(2) mungkin berbohong, tapi mengakses(2) lebih tahu.

Pragma "terbuka" dapat digunakan untuk menentukan disiplin default untuk menangani konstruktor (mis
Buka()) dan untuk qx//. Dua pseudo-disiplin ":raw" dan ":crlf" saat ini
didukung pada platform turunan DOS (yaitu di mana binmode bukan no-op). Lihat juga
"mode bin() dapat digunakan untuk mengatur :crlf dan :mode mentah".

Kegunaan Perubahan


dprofpp
"dprofpp" digunakan untuk menampilkan data profil yang dihasilkan menggunakan "Devel :: DProf". Lihat dprofpp.

temukan2perl
Utilitas "find2perl" sekarang menggunakan fitur yang disempurnakan dari modul File::Find. Itu
Opsi -kedalaman dan -ikuti didukung. Dokumentasi Pod juga disertakan dalam
Script.

h2xs
Alat "h2xs" sekarang dapat bekerja bersama dengan "C::Scan" (tersedia dari CPAN) untuk
secara otomatis mengurai file header kehidupan nyata. Opsi "-M", "-a", "-k", dan "-o" adalah
baru.

perlcc
"perlcc" sekarang mendukung backend C dan Bytecode. Secara default, ini menghasilkan output dari
backend C sederhana daripada backend C yang dioptimalkan.

Dukungan untuk platform non-Unix telah ditingkatkan.

perldoc
"perldoc" telah dikerjakan ulang untuk menghindari kemungkinan lubang keamanan. Ini tidak akan secara default membiarkan
sendiri dijalankan sebagai pengguna super, tetapi Anda masih dapat menggunakan -U beralih untuk mencoba membuatnya jatuh
keistimewaan terlebih dahulu.

Perl Debugger
Banyak perbaikan bug dan peningkatan ditambahkan ke perl5db.pl, debugger Perl. Bantuan
dokumentasi diatur ulang. Perintah baru termasuk "< ?", "> ?", dan "{ ?" untuk mendaftar
tindakan saat ini, "man dokumen" untuk menjalankan penampil dokumen Anda pada beberapa dokumen perl, dan dukungan untuk
pilihan yang dikutip. Informasi bantuan telah diatur ulang, dan harus dapat dilihat sekali lagi jika
kamu menggunakan kurang sebagai pager Anda. Lubang keamanan yang serius telah terpasang - Anda harus
segera hapus semua versi debugger Perl yang lebih lama seperti yang diinstal sebelumnya
rilis, sepanjang perjalanan kembali ke Perl3, dari sistem Anda untuk menghindari digigit oleh ini.

peningkatan Dokumentasi


Banyak file README khusus platform sekarang menjadi bagian dari instalasi Perl. Melihat
perl untuk daftar lengkapnya.

perlapi.pod
Daftar resmi fungsi Perl API publik.

perlboot.pod
Sebuah tutorial untuk pemula tentang Perl berorientasi objek.

perlkompilasi.pod
Pengantar menggunakan suite Kompilator Perl.

perldbmfilter.pod
Dokumentasi cara menggunakan fasilitas filter DBM.

perldebug.pod
Semua materi yang tidak terkait dengan menjalankan debugger Perl, ditambah semua nyali tingkat rendah
detail yang berisiko menghancurkan pengguna biasa dari debugger, telah dipindahkan dari
halaman manual lama ke entri berikutnya di bawah ini.

perldebguts.pod
Halaman manual baru ini berisi materi tingkat rendah yang tidak terkait dengan Perl
debugger, tetapi sedikit terkait dengan debugging Perl itu sendiri. Itu juga mengandung beberapa rahasia
detail internal tentang bagaimana proses debugging bekerja yang mungkin hanya menarik untuk
pengembang debugger Perl.

perlfork.pod
Catatan tentang garpu() emulasi saat ini tersedia untuk platform Windows.

perlfilter.pod
Pengantar untuk menulis filter sumber Perl.

perlhack.pod
Beberapa panduan untuk meretas kode sumber Perl.

perlintern.pod
Daftar fungsi internal dalam kode sumber Perl. (Daftar saat ini kosong.)

perllexwarn.pod
Pengenalan dan informasi referensi tentang kategori peringatan yang dicakup secara leksikal.

perlnumber.pod
Informasi rinci tentang angka seperti yang diwakili dalam Perl.

perlopetutut.pod
Sebuah tutorial tentang menggunakan Buka() efektif.

perlrefut.pod
Sebuah tutorial yang memperkenalkan esensi referensi.

perltootc.pod
Tutorial mengelola data kelas untuk modul objek.

perltodo.pod
Diskusi tentang fitur yang paling sering dicari yang mungkin suatu hari nanti akan didukung di Perl.

perlunicode.pod
Pengenalan fitur dukungan Unicode di Perl.

Performance Perangkat tambahan


Sederhana menyortir() menggunakan { $a <=> $b } dan itu 'like' adalah dioptimalkan
Banyak yang umum menyortir() operasi menggunakan blok sebaris sederhana sekarang dioptimalkan untuk lebih cepat
kinerja.

Dioptimalkan tugas untuk leksikal variabel
Operasi tertentu dalam RHS pernyataan penugasan telah dioptimalkan untuk disetel secara langsung
variabel leksikal pada LHS, menghilangkan overhead penyalinan yang berlebihan.

Lebih cepat subrutin panggilan
Perubahan kecil dalam cara menangani panggilan subrutin secara internal memberikan peningkatan kecil
dalam kinerja

menghapus(), setiap(), nilai () dan hash perulangan adalah lebih cepat
Nilai hash yang dikembalikan oleh menghapus(), setiap(), nilai () dan hash dalam konteks daftar adalah
nilai aktual dalam hash, bukan salinan. Ini menghasilkan secara signifikan lebih baik
kinerja, karena menghilangkan penyalinan yang tidak perlu di sebagian besar situasi.

Instalasi dan konfigurasi Perbaikan


-Dusthreads cara sesuatu berbeda
Bendera -Dusethreads sekarang mengaktifkan dukungan utas berbasis juru bahasa eksperimental dengan
bawaan. Untuk mendapatkan rasa dari utas eksperimental yang ada di 5.005 sebagai gantinya, Anda perlu
jalankan Konfigurasi dengan "-Dusethreads -Duse5005threads".

Pada v5.6.0, dukungan utas juru bahasa masih kekurangan cara untuk membuat utas baru
dari Perl (yaitu, "gunakan Utas;" tidak akan berfungsi dengan utas juru bahasa). "gunakan Benang;"
terus tersedia ketika Anda menentukan opsi -Duse5005threads untuk Mengkonfigurasi, bug
dan semua.

CATATAN: Dukungan untuk utas terus menjadi fitur eksperimental.
Antarmuka dan implementasi dapat berubah secara tiba-tiba dan drastis.

New Konfigurasi bendera
Bendera baru berikut dapat diaktifkan pada baris perintah Konfigurasi dengan menjalankan Konfigurasi
dengan "-Dflag".

gunakan multiplisitas
usethreads useithreads (utas penerjemah baru: belum ada Perl API)
usethreads use5005threads (utas seperti di 5.005)

use64bitint (sama dengan 'use64bits' yang sekarang tidak digunakan lagi)
gunakan 64bitall

gunakanlongdouble
gunakan lebih banyak bit
gunakan file besar
usingocks (hanya SOCKS v5 yang didukung)

berulir dan 64-bit sekarang lebih berani
Opsi Konfigurasi yang memungkinkan penggunaan utas dan penggunaan 64-bitness sekarang lebih banyak
berani dalam arti bahwa mereka tidak lagi memiliki daftar eksplisit sistem operasi yang dikenal
kemampuan utas/64-bit. Dengan kata lain: jika sistem operasi Anda memiliki kebutuhan
API dan tipe data, Anda seharusnya dapat melanjutkan dan menggunakannya, untuk utas oleh
Configure -Dusethreads, dan untuk 64 bit secara eksplisit dengan Configure -Duse64bitint atau
secara implisit jika sistem Anda memiliki tipe data lebar 64-bit. Lihat juga "dukungan 64-bit".

Panjang Dobel
Beberapa platform memiliki "ganda panjang", angka floating point dengan rentang yang bahkan lebih besar daripada
"ganda" biasa. Untuk mengaktifkan penggunaan ganda panjang untuk skalar Perl, gunakan -Duselongdouble.

-Dusemorebit
Anda dapat mengaktifkan -Duse64bitint dan -Duselongdouble dengan -Dusemorebits. Lihat juga
"dukungan 64-bit".

-Gunakan file besar
Beberapa platform mendukung API sistem yang mampu menangani file besar (biasanya,
file yang lebih besar dari dua gigabyte). Perl akan mencoba menggunakan API ini jika Anda meminta
-Gunakan file besar.

Lihat "Dukungan file besar" untuk informasi lebih lanjut.

installusrbinperl
Anda dapat menggunakan "Configure -Uinstallusrbinperl" yang menyebabkan installperl melewatkan instalasi
perl juga sebagai /usr/bin/perl. Ini berguna jika Anda memilih untuk tidak memodifikasi / usr / bin untuk beberapa
alasan atau lainnya tetapi berbahaya karena banyak skrip menganggap menemukan Perl di /usr/bin/perl.

SOCKS mendukung
Anda dapat menggunakan "Configure -Dusesocks" yang menyebabkan Perl menyelidiki protokol proxy SOCKS
perpustakaan (v5, bukan v4). Untuk informasi lebih lanjut tentang SOCKS, lihat:

http://www.socks.nec.com/

"-SEBUAH" bendera
Anda dapat "mengedit ulang" variabel Konfigurasi menggunakan sakelar Konfigurasi "-A". Pengeditan
terjadi segera setelah file petunjuk khusus platform telah diproses tetapi sebelumnya
proses konfigurasi yang sebenarnya dimulai. Jalankan "Configure -h" untuk mengetahui "-A" selengkapnya
sintaks.

ditingkatkan Instalasi Direktori
Struktur instalasi telah diperkaya untuk meningkatkan dukungan untuk pemeliharaan
beberapa versi perl, untuk menyediakan lokasi untuk modul, skrip, dan . yang disediakan vendor
halaman manual, dan untuk memudahkan pemeliharaan modul, skrip, dan halaman manual yang ditambahkan secara lokal. Melihat
bagian Direktori Instalasi di file INSTALL untuk detail lengkapnya. Untuk
sebagian besar pengguna membangun dan menginstal dari sumber, defaultnya akan baik-baik saja.

Jika sebelumnya Anda menggunakan "Configure -Dsitelib" atau "-Dsitearch" untuk menetapkan nilai khusus untuk
direktori perpustakaan, Anda mungkin ingin mempertimbangkan untuk menggunakan pengaturan "-Dsiteprefix" yang baru
sebagai gantinya. Juga, jika Anda ingin menggunakan kembali file config.sh dari versi Perl sebelumnya,
Anda harus memastikan bahwa Configure membuat pilihan yang masuk akal untuk direktori baru.
Lihat INSTALL untuk detail lengkapnya.

gcc secara otomatis mencoba if 'cc' tidak tidak terlihat untuk be kerja
Di banyak platform, 'cc' yang disediakan vendor terlalu dilucuti untuk membangun Perl (pada dasarnya,
'cc' tidak melakukan ANSI C). Jika ini masalahnya dan 'cc' sepertinya tidak
menjadi kompiler GNU C 'gcc', upaya otomatis dilakukan untuk menemukan dan menggunakan 'gcc' sebagai gantinya.

Platform tertentu perubahan


Didukung platform
· The Mach CThreads (NEXTSTEP, OPENSTEP) sekarang didukung oleh ekstensi Thread.

· GNU/Hurd sekarang didukung.

· Rhapsody/Darwin sekarang didukung.

· EPOC sekarang didukung (di Psion 5).

· Port cygwin (sebelumnya cygwin32) telah sangat ditingkatkan.

DOS
· Perl sekarang bekerja dengan djgpp 2.02 (dan 2.03 alpha).

· Nama variabel lingkungan tidak lagi diubah menjadi huruf besar.

· Kode keluar yang salah dari backticks telah diperbaiki.

· Port ini terus menggunakan globbing bawaannya sendiri (bukan File::Glob).

OS390 (Edisi Terbuka MV)
Dukungan untuk platform EBCDIC ini belum diperbarui dalam rilis ini. Ada
kesulitan dalam merekonsiliasi standardisasi Perl pada UTF-8 sebagai representasi internalnya
untuk karakter dengan set karakter EBCDIC, karena keduanya tidak kompatibel.

Tidak jelas apakah versi mendatang akan memperbarui dukungan untuk platform ini, tetapi
kemungkinan ada.

VMS
Banyak revisi dan ekstensi untuk konfigurasi, pembuatan, pengujian, dan pemasangan
proses untuk mengakomodasi perubahan inti dan opsi khusus VMS.

Perluas kode penanganan %ENV untuk memungkinkan pemetaan runtime ke nama logis, simbol CLI, dan CRTL
susunan lingkungan.

Perpanjangan kode permintaan subproses untuk menerima spesifikasi file sebagai perintah "kata kerja".

Tambahkan ke baris perintah Perl yang memproses kemampuan untuk menggunakan tipe file default dan untuk mengenali
Gaya Unix "2>&1".

Perluasan File::Spec::VMS rutin, dan integrasi ke ExtUtils::MM_VMS.

Ekstensi ExtUtils::MM_VMS untuk menangani ekstensi kompleks dengan lebih fleksibel.

Barewords di awal jalur sintaks Unix dapat diperlakukan sebagai teks daripada hanya sebagai logis
nama.

Terjemahan aman opsional dari beberapa nama logis yang digunakan secara internal oleh Perl.

Berbagai perbaikan bug dan porting kode inti baru ke VMS.

Terima kasih dengan senang hati disampaikan kepada banyak orang yang telah berkontribusi patch VMS, pengujian,
dan ide.

Win32
Perl sekarang dapat meniru garpu() secara internal, menggunakan beberapa juru bahasa yang berjalan di berbagai
benang bersamaan. Dukungan ini harus diaktifkan pada waktu pembuatan. Lihat perlfork untuk
Informasi rinci.

Saat diberi nama path yang hanya terdiri dari nama drive, seperti "A:", bukadir() dan
stat () sekarang gunakan direktori kerja saat ini untuk drive daripada root drive.

Fungsi XSUB bawaan di Win32:: namespace didokumentasikan. Lihat Win32.

$^X sekarang berisi nama path lengkap dari executable yang sedang berjalan.

A Win32::GetLongPathName() fungsi disediakan untuk melengkapi Win32::DapatkanNamaJalur Lengkap() dan
Win32::DapatkanShortPathName(). Lihat Win32.

POSIX::nama() didukung.

system(1,...) sekarang mengembalikan ID proses yang sebenarnya daripada pegangan proses. membunuh() menerima
id proses nyata apa pun, daripada mengembalikan nilai secara ketat dari sistem (1,...).

Untuk kompatibilitas yang lebih baik dengan Unix, "kill(0, $pid)" sekarang dapat digunakan untuk menguji apakah a
proses ada.

Modul "Shell" didukung.

Dukungan yang lebih baik untuk membangun Perl di bawah command.com di Windows 95 telah ditambahkan.

Skrip dibaca dalam mode biner secara default untuk mengizinkan ByteLoader (dan mekanisme filter
secara umum) untuk bekerja dengan baik. Untuk kompatibilitas, pegangan file DATA akan diatur ke teks
mode jika carriage return terdeteksi di akhir baris yang berisi __END__ atau
__DATA__ tanda; jika tidak, pegangan file DATA akan dibiarkan terbuka dalam mode biner. Lebih awal
versi selalu membuka filehandle DATA dalam mode teks.

gumpal() operator diimplementasikan melalui ekstensi "File::Glob", yang mendukung glob
sintaks dari shell C. Hal ini meningkatkan fleksibilitas dari gumpal() operator, tapi ada
mungkin masalah kompatibilitas untuk program yang mengandalkan sintaks globbing yang lebih lama. Jika kamu
ingin mempertahankan kompatibilitas dengan sintaks yang lebih lama, Anda mungkin ingin menjalankan Perl dengan
"-MFile::DosGlob". Untuk detail dan informasi kompatibilitas, lihat File::Glob.

Peningkatan kesalahan tetap


on kosong arsip
Dengan $/ disetel ke "undef", "menyeruput" file kosong mengembalikan string dengan panjang nol (sebagai gantinya
dari "undef", seperti dulu) pertama kali HANDLE dibaca setelah $/ disetel ke "undef".
Bacaan lebih lanjut menghasilkan "undef".

Ini berarti bahwa yang berikut ini akan menambahkan "foo" ke file kosong (dulu tidak melakukan apa-apa):

perl -0777 -pi -e 's/^/foo/' empty_file

Perilaku dari:

perl -pi -e 's/^/foo/' empty_file

tidak berubah (terus membiarkan file kosong).

"evaluasi '...'" perbaikan
Nomor baris (seperti yang dicerminkan oleh penelepon() dan sebagian besar diagnostik) dalam "eval '...'" adalah
sering salah di mana di sini dokumen terlibat. Ini telah diperbaiki.

Pencarian leksikal untuk variabel yang muncul di "eval '...'" dalam fungsi yang
sendiri disebut dalam "eval '...'" sedang mencari tempat yang salah untuk leksikal. Itu
pencarian leksikal sekarang berakhir dengan benar pada batas blok subrutin.

Penggunaan "kembali" dalam "eval {...}" menyebabkan $@ tidak disetel ulang dengan benar saat tidak
pengecualian terjadi dalam eval. Ini telah diperbaiki.

Penguraian dokumen di sini dulu cacat ketika muncul sebagai pengganti
ekspresi dalam "eval 's/.../.../e'". Ini telah diperbaiki.

Semua kompilasi kesalahan adalah benar kesalahan
Beberapa "kesalahan" yang ditemui pada waktu kompilasi karena kebutuhan dihasilkan saat peringatan diikuti
dengan penghentian program pada akhirnya. Ini memungkinkan lebih banyak kesalahan seperti itu dilaporkan di a
menjalankan tunggal, daripada menyebabkan berhenti keras pada kesalahan pertama yang ditemui.

Mekanisme untuk melaporkan kesalahan tersebut telah diimplementasikan kembali ke waktu kompilasi antrian
kesalahan dan melaporkannya di akhir kompilasi sebagai kesalahan yang sebenarnya daripada sebagai
peringatan. Ini memperbaiki kasus di mana pesan kesalahan bocor dalam bentuk peringatan
ketika kode dikompilasi saat dijalankan menggunakan "eval STRING", dan juga memungkinkan kesalahan seperti itu terjadi
andal terjebak menggunakan "eval "..."".

Secara implisit tertutup pegangan file adalah lebih aman
Terkadang filehandle tertutup secara implisit (seperti ketika dilokalkan, dan Perl
secara otomatis menutupnya saat keluar dari ruang lingkup) dapat secara tidak sengaja mengatur $? atau $!. Ini
telah diperbaiki.

Tingkah laku of daftar iris is lebih konsisten
Saat mengambil sepotong daftar literal (sebagai lawan dari sepotong array atau hash), Perl
digunakan untuk mengembalikan daftar kosong jika hasilnya terdiri dari semua nilai undef.

Perilaku baru adalah menghasilkan daftar kosong jika (dan hanya jika) daftar asli kosong.
Perhatikan contoh berikut:

@a = (1,undef,undef,2)[2,1,2];

Perilaku lama akan mengakibatkan @a tidak memiliki elemen. Perilaku baru memastikan
ia memiliki tiga elemen yang tidak terdefinisi.

Perhatikan khususnya bahwa perilaku irisan kasus berikut tetap tidak berubah:

@a = ()[1,2];
@a = (pergi)[7,0];
@a = (apapun_pengembalian_daftar_kosong())[2,1,2];
@a = @b[2,1,2];
@a = @c{'a','b','c'};

Lihat perldata.

"(\$)" prototipe dan $fo{a}
Prototipe referensi skalar sekarang memungkinkan elemen hash atau array dengan benar di slot itu.

"pergi ke &sub" dan OTOMATIS
Konstruksi "goto &sub" berfungsi dengan benar ketika &sub kebetulan dimuat secara otomatis.

"-kata-kata kosong" diizinkan bawah "menggunakan bilangan bulat"
Kutipan otomatis kata-kata kosong yang didahului oleh "-" tidak berfungsi di versi sebelumnya ketika
pragma "bilangan bulat" diaktifkan. Ini telah diperbaiki.

Kegagalan in MENGHANCURKAN()
Ketika kode di destruktor melemparkan pengecualian, itu tidak diperhatikan di versi sebelumnya
Perl, kecuali seseorang kebetulan mencari di $@ tepat setelah titik destruktor
kebetulan lari. Kegagalan tersebut sekarang terlihat sebagai peringatan saat peringatan diaktifkan.

Lokal bug tetap
cetakf() dan lari cepat() sebelumnya reset lokal numerik kembali ke lokal "C" default.
Ini telah diperbaiki.

Angka yang diformat menurut lokal numerik lokal (seperti menggunakan koma desimal
bukannya titik desimal) menyebabkan peringatan "bukan numerik", bahkan saat operasi
mengakses angka-angka itu menghasilkan hasil yang benar. Peringatan ini telah dihentikan.

Memori kebocoran
Konstruksi "eval 'return sub {...}'" terkadang dapat membocorkan memori. Ini telah diperbaiki.

Operasi yang bukan konstruktor filehandle yang digunakan untuk membocorkan memori saat digunakan pada invalid
menangani file. Ini telah diperbaiki.

Konstruksi yang memodifikasi @_ bisa gagal untuk mengalokasi nilai di @_ dan dengan demikian membocorkan memori.
Ini telah diperbaiki.

Palsu subrutin Rintisan bertopik setelah gagal subrutin panggilan
Perl terkadang dapat membuat rintisan subrutin kosong ketika subrutin tidak ditemukan di
kemasan. Kasus-kasus seperti itu menghentikan pencarian metode selanjutnya agar tidak berkembang menjadi paket dasar.
Ini telah diperbaiki.

Noda kegagalan bawah "-U"
Saat berjalan dalam mode tidak aman, pelanggaran taint terkadang dapat menyebabkan kegagalan senyap. Ini
telah diperbaiki.

AKHIR blok dan itu "-C" saklar
Versi sebelumnya digunakan untuk menjalankan BEGIN dan END memblokir ketika Perl dijalankan dalam mode kompilasi saja.
Karena ini biasanya bukan perilaku yang diharapkan, blok END tidak dieksekusi lagi
ketika sakelar "-c" digunakan, atau jika kompilasi gagal.

Lihat "Dukungan untuk PERIKSA blok" untuk cara menjalankan sesuatu saat fase kompilasi berakhir.

Potensi untuk bocor DATA pegangan file
Menggunakan token "__DATA__" membuat filehandle implisit ke file yang berisi
token. Merupakan tanggung jawab program untuk menutupnya ketika selesai membaca darinya.

Peringatan ini sekarang lebih baik dijelaskan dalam dokumentasi. Lihat perldata.

New or Berubah Diagnostik


Variabel "%s" %s menutupi deklarasi sebelumnya dalam %s yang sama
(W misc) Variabel "saya" atau "kami" telah dideklarasikan ulang dalam cakupan saat ini atau
pernyataan, secara efektif menghilangkan semua akses ke instance sebelumnya. Ini
hampir selalu kesalahan ketik. Perhatikan bahwa variabel sebelumnya akan tetap ada
sampai akhir lingkup atau sampai semua referensi penutupan dimusnahkan.

"sub saya" belum diterapkan
(F) Subrutin dengan cakupan leksikal belum diimplementasikan. Jangan coba itu dulu.

variabel "kita" %s dideklarasikan ulang
(W misc) Anda tampaknya telah mendeklarasikan global yang sama sekali sebelumnya di saat ini
lingkup leksikal.

'!' diperbolehkan hanya setelah mengetik %s
(F) '!' diperbolehkan masuk mengemas() dan membongkar() hanya setelah jenis tertentu. Lihat "paket" di
perfunc.

/ tidak bisa menghitung
(F) Anda memiliki template unpack yang menunjukkan string panjang yang dihitung, tetapi Anda juga memiliki
menentukan ukuran eksplisit untuk string. Lihat "paket" di perlfunc.

/ harus diikuti oleh a, A atau Z
(F) Anda memiliki template unpack yang menunjukkan string panjang yang dihitung, yang harus
diikuti oleh salah satu huruf a, A atau Z untuk menunjukkan jenis string yang akan dibuat
dibongkar. Lihat "paket" di perlfunc.

/ harus diikuti oleh a*, A* atau Z*
(F) Anda memiliki templat paket yang menunjukkan string panjang yang dihitung, Saat ini satu-satunya
benda yang dapat dihitung panjangnya adalah a*, a* atau z*. Lihat "paket" di perlfunc.

/ harus mengikuti tipe numerik
(F) Anda memiliki template unpack yang berisi '#', tetapi ini tidak mengikuti beberapa
spesifikasi membongkar numerik. Lihat "paket" di perlfunc.

/%s/: Pelarian tak dikenal \\%c lolos
(W regexp) Anda menggunakan kombinasi karakter garis miring terbalik yang tidak dikenali oleh Perl.
Kombinasi ini muncul dalam variabel interpolasi atau reguler yang dibatasi "'"
ekspresi. Karakter itu dipahami secara harfiah.

/%s/: Escape tak dikenal \\%c di kelas karakter dilewati
(W regexp) Anda menggunakan kombinasi karakter garis miring terbalik yang tidak dikenali oleh Perl
di dalam kelas karakter. Karakter itu dipahami secara harfiah.

/%s/ mungkin harus ditulis sebagai "%s"
(Sintaks W) Anda telah menggunakan pola yang diharapkan Perl untuk menemukan string, seperti pada:
argumen pertama untuk "bergabung". Perl akan memperlakukan hasil benar atau salah dari pencocokan
pola terhadap $_ sebagai string, yang mungkin bukan yang Anda pikirkan.

%s() dipanggil terlalu dini untuk memeriksa prototipe
(W prototipe) Anda telah memanggil fungsi yang memiliki prototipe sebelum parser melihat a
definisi atau deklarasi untuk itu, dan Perl tidak dapat memeriksa apakah panggilan tersebut sesuai dengan
Prototipe. Anda perlu menambahkan deklarasi prototipe awal untuk
subrutin yang bersangkutan, atau pindahkan definisi subrutin sebelum panggilan untuk mendapatkan
pemeriksaan prototipe yang tepat. Atau, jika Anda yakin bahwa Anda menelepon
berfungsi dengan benar, Anda dapat meletakkan ampersand sebelum nama untuk menghindari peringatan.
Lihat perlsub.

Argumen %s bukan elemen HASH atau ARRAY
(F) Argumen untuk ada() harus berupa elemen hash atau array, seperti:

$fo{$bar}
$ref->{"susie"}[12]

Argumen %s bukanlah elemen atau irisan HASH atau ARRAY
(F) Argumen untuk menghapus() harus berupa elemen hash atau array, seperti:

$fo{$bar}
$ref->{"susie"}[12]

atau irisan hash atau array, seperti:

@foo[$bar, $baz, $xyzzy]
@{$ref->[12]}{"susie", "antrian"}

Argumen %s bukan nama subrutin
(F) Argumen untuk ada() untuk "exists &sub" harus berupa nama subrutin, dan bukan a
panggilan subrutin. "ada & sub()" akan menghasilkan kesalahan ini.

Atribut paket %s mungkin berbenturan dengan kata cadangan di masa mendatang: %s
(W reserved) Nama atribut huruf kecil digunakan yang memiliki handler khusus paket.
Nama itu mungkin memiliki arti bagi Perl sendiri suatu hari nanti, meskipun belum.
Mungkin Anda harus menggunakan nama atribut kasus campuran. Lihat atribut.

(dalam pembersihan) %s
(W misc) Awalan ini biasanya menunjukkan bahwa a MENGHANCURKAN() metode mengangkat yang ditunjukkan
pengecualian. Karena destruktor biasanya dipanggil oleh sistem pada titik yang berubah-ubah
selama eksekusi, dan seringkali berkali-kali, peringatan dikeluarkan hanya sekali
untuk sejumlah kegagalan yang jika tidak akan menghasilkan pesan yang sama adalah
ulang.

Kegagalan panggilan balik pengguna yang dikirim menggunakan tanda "G_KEEPERR" juga dapat mengakibatkan
peringatan ini. Lihat "G_KEEPERR" di perlcall.

<> harus kutipan
(F) Anda menulis "membutuhkan " ketika Anda seharusnya menulis "memerlukan 'file'".

Mencoba untuk bergabung dengan diri sendiri
(F) Anda mencoba bergabung dengan utas dari dalam dirinya sendiri, yang merupakan tugas yang mustahil. Anda
mungkin bergabung dengan utas yang salah, atau Anda mungkin perlu memindahkan Ikuti() untuk beberapa lainnya
benang.

Pola substitusi yang dievaluasi buruk
(F) Anda telah menggunakan sakelar /e untuk mengevaluasi penggantian substitusi, tetapi perl
menemukan kesalahan sintaks dalam kode untuk dievaluasi, kemungkinan besar kurung kurawal yang tidak terduga
'}'.

Buruk alokasi ulang() diabaikan
(S) Rutinitas internal yang disebut alokasi ulang() pada sesuatu yang belum pernah terjadi malloc ()ed
di tempat pertama. Wajib, tetapi dapat dinonaktifkan dengan mengatur variabel lingkungan
"PERL_BADFREE" ke 1.

Bareword ditemukan dalam kondisional
(W bareword) Kompilator menemukan bareword yang diharapkan bersyarat, yang
sering menunjukkan bahwa sebuah || atau && diuraikan sebagai bagian dari argumen terakhir dari
konstruksi sebelumnya, misalnya:

buka FOO || mati;

Ini juga dapat menunjukkan konstanta salah eja yang telah ditafsirkan sebagai kata kosong:

gunakan TYPO konstan => 1;
if (TYOP) { cetak "foo" }

Pragma "ketat" berguna untuk menghindari kesalahan seperti itu.

Angka biner > 0b11111111111111111111111111111111 non-portabel
(W portabel) Angka biner yang Anda tentukan lebih besar dari 2**32-1 (4294967295) dan
oleh karena itu non-portabel antar sistem. Lihat perlport untuk lebih lanjut tentang portabilitas
keprihatinan.

Ukuran vektor bit > 32 non-portabel
(W portabel) Menggunakan ukuran vektor bit yang lebih besar dari 32 tidak portabel.

Buffer overflow di prime_env_iter: %s
(W internal) Peringatan khusus untuk VMS. Sementara Perl bersiap untuk mengulangi
%ENV, itu menemukan nama logis atau definisi simbol yang terlalu panjang, jadi itu
dipotong ke string yang ditampilkan.

Tidak dapat memeriksa sistem file skrip "%s"
(P) Untuk beberapa alasan Anda tidak dapat memeriksa sistem file skrip untuk nosuid.

Tidak dapat mendeklarasikan kelas untuk %s non-skalar di "%s"
(S) Saat ini, hanya variabel skalar yang dapat dideklarasikan dengan kualifikasi kelas tertentu di a
pernyataan "saya" atau "kami". Semantik dapat diperluas untuk jenis variabel lainnya
di masa depan.

Tidak dapat mendeklarasikan %s di "%s"
(F) Hanya variabel skalar, array, dan hash yang dapat dideklarasikan sebagai variabel "saya" atau "kami".
Mereka harus memiliki pengenal biasa sebagai nama.

Tidak dapat mengabaikan sinyal CHLD, memaksa ke default
(Sinyal W) Perl telah mendeteksi bahwa itu sedang dijalankan dengan sinyal SIGCHLD (terkadang
dikenal sebagai SIGCLD) dinonaktifkan. Karena menonaktifkan sinyal ini akan mengganggu
penentuan status keluar dari proses anak, Perl telah mengatur ulang sinyal ke
nilai default. Situasi ini biasanya menunjukkan bahwa program induk di mana:
Perl mungkin berjalan (misalnya, cron) menjadi sangat ceroboh.

Tidak dapat mengubah panggilan subrutin non-nilai
(F) Subrutin yang dimaksudkan untuk digunakan dalam konteks nilai harus dideklarasikan seperti itu, lihat
"Lnilai subrutin" di perlsub.

Tidak dapat membaca lingkungan CRTL
(S) Peringatan khusus untuk VMS. Perl mencoba membaca elemen %ENV dari CRTL
array lingkungan internal dan menemukan array hilang. Anda perlu mencari
di mana CRTL Anda salah menempatkan lingkungannya atau tentukan PERL_ENV_TABLES (lihat perlvms) jadi
lingkungan itu tidak dicari.

Tidak dapat menghapus %s: %s, melewatkan file
(S) Anda meminta edit di tempat tanpa membuat file cadangan. Perl tidak bisa
hapus file asli untuk menggantinya dengan file yang dimodifikasi. Filenya tertinggal
tidak dimodifikasi.

Tidak dapat mengembalikan %s dari subrutin nilai
(F) Perl mendeteksi upaya untuk mengembalikan nilai ilegal (seperti sementara atau hanya baca
nilai) dari subrutin yang digunakan sebagai nilai. Ini tidak diperbolehkan.

Tidak dapat melemahkan nonreferensi
(F) Anda berusaha melemahkan sesuatu yang bukan acuan. Hanya referensi yang bisa
menjadi lemah.

Kelas karakter [:%s:] tidak diketahui
(F) Kelas dalam sintaks kelas karakter [::] tidak diketahui. Lihat perlre.

Sintaks kelas karakter [%s] termasuk dalam kelas karakter
(W unsafe) Kelas karakter mengkonstruksi [: :], [= =], dan [. .] Pergilah dalam karakter
kelas, [] adalah bagian dari konstruk, misalnya: /[012[:alpha:]345]/. Note
bahwa [= =] dan [. .] saat ini tidak diimplementasikan; mereka hanyalah pengganti untuk
ekstensi masa depan.

Konstanta bukan referensi %s
(F) Nilai konstan (mungkin dideklarasikan menggunakan pragma "gunakan konstanta") sedang
dereferenced, tetapi jumlah jenis referensi yang salah. Pesan tersebut menunjukkan
jenis referensi yang diharapkan. Ini biasanya menunjukkan kesalahan sintaks dalam
dereferensi nilai konstan. Lihat "Fungsi Konstan" di perlsub dan konstanta.

konstanta(%s): %s
(F) Pengurai menemukan inkonsistensi baik saat mencoba mendefinisikan kelebihan beban
konstan, atau ketika mencoba menemukan nama karakter yang ditentukan dalam escape "\N{...}".
Mungkin Anda lupa memuat pragma "overload" atau "charnames" yang sesuai? Melihat
charname dan kelebihan beban.

INTI::%s bukan kata kunci
(F) CORE:: namespace dicadangkan untuk kata kunci Perl.

didefinisikan (@array) sudah usang
(D) didefinisikan() biasanya tidak berguna pada array karena memeriksa undefined
skalar nilai. Jika Anda ingin melihat apakah array kosong, gunakan saja "if (@array) { # not
kosong }" misalnya.

didefinisikan (%hash) sudah usang
(D) didefinisikan() biasanya tidak berguna pada hash karena memeriksa undefined
skalar nilai. Jika Anda ingin melihat apakah hash kosong, gunakan saja "if (%hash) { # not
kosong }" misalnya.

Tidak menghasilkan tajuk yang valid
Lihat Kesalahan server.

(Apakah maksud Anda "lokal" dan bukan "kami"?)
(W misc) Ingat bahwa "kami" tidak melokalisasi variabel global yang dideklarasikan. Kamu punya
menyatakannya lagi dalam lingkup leksikal yang sama, yang tampaknya berlebihan.

Dokumen tidak berisi data
Lihat Kesalahan server.

memasukkan %s efektif gagal
(F) Sementara di bawah pragma "gunakan filetest", mengganti uid yang nyata dan efektif atau
gid gagal.

false [] rentang "%s" di regexp
(W regexp) Rentang kelas karakter harus dimulai dan diakhiri dengan karakter literal, bukan
kelas karakter lain seperti "\d" atau "[:alpha:]". "-" dalam rentang salah Anda adalah
ditafsirkan sebagai "-". Pertimbangkan untuk mengutip "-", "\-". Lihat perlre.

Filehandle %s dibuka hanya untuk keluaran
(W io) Anda mencoba membaca dari filehandle yang dibuka hanya untuk menulis. Jika Anda berniat
untuk menjadi filehandle baca/tulis, Anda harus membukanya dengan "+<" atau "+>" atau "+>>"
bukannya dengan "<" atau tidak sama sekali. Jika Anda hanya ingin membaca dari file, gunakan "<".
Lihat "buka" di perlfunc.

kawanan() pada filehandle tertutup %s
(W ditutup) Pegangan file yang Anda coba kawanan() ditutup beberapa waktu
sebelum sekarang. Periksa aliran logika Anda. kawanan() beroperasi pada filehandle. Apakah kamu
mencoba menelepon kawanan() di dirhandle dengan nama yang sama?

Simbol global "%s" membutuhkan nama paket yang eksplisit
(F) Anda telah mengatakan "gunakan vars ketat", yang menunjukkan bahwa semua variabel harus baik
tercakup secara leksikal (menggunakan "saya"), dideklarasikan sebelumnya menggunakan "milik kami", atau secara eksplisit
memenuhi syarat untuk mengatakan di paket mana variabel global berada (menggunakan "::").

Angka heksadesimal > 0xffffffff non-portabel
(W portabel) Angka heksadesimal yang Anda tentukan lebih besar dari 2**32-1 (4294967295)
dan karena itu non-portabel antar sistem. Lihat perlport untuk lebih lanjut tentang portabilitas
keprihatinan.

Nilai lingkungan CRTL yang tidak terbentuk dengan benar "%s"
(W internal) Peringatan khusus untuk VMS. Perl mencoba membaca internal CRTL
environ array, dan menemukan elemen tanpa pembatas "=" yang digunakan untuk memisahkan
kunci dari nilai. Elemen diabaikan.

Pesan salah bentuk di prime_env_iter: |%s|
(W internal) Peringatan khusus untuk VMS. Perl mencoba membaca nama logis atau CLI
definisi simbol saat bersiap untuk mengulangi %ENV, dan tidak melihat yang diharapkan
pembatas antara kunci dan nilai, sehingga garis diabaikan.

Angka biner ilegal %s
(F) Anda menggunakan angka selain 0 atau 1 dalam bilangan biner.

Digit biner ilegal %s diabaikan
(Digit W) Anda mungkin telah mencoba menggunakan angka selain 0 atau 1 dalam bilangan biner.
Interpretasi bilangan biner berhenti sebelum digit yang menyinggung.

Jumlah bit ilegal dalam vec
(F) Jumlah bit dalam vektor() (argumen ketiga) harus berupa pangkat dua dari 1 hingga
32 (atau 64, jika platform Anda mendukungnya).

Integer overflow dalam %s angka
(W overflow) Bilangan heksadesimal, oktal, atau biner yang telah Anda tentukan sebagai a
literal atau sebagai argumen untuk segi enam() or okt() terlalu besar untuk arsitektur Anda, dan memiliki
telah dikonversi ke angka floating point. Pada arsitektur 32-bit yang terbesar
bilangan heksadesimal, oktal atau biner yang dapat direpresentasikan tanpa overflow adalah 0xFFFFFFFF,
037777777777, atau masing-masing 0b11111111111111111111111111111111. Perhatikan bahwa Perl
secara transparan mempromosikan semua angka ke representasi floating point
internal - tunduk pada hilangnya kesalahan presisi dalam operasi berikutnya.

Atribut %s tidak valid: %s
Atribut yang ditunjukkan untuk subrutin atau variabel tidak dikenali oleh Perl atau oleh
penangan yang disediakan pengguna. Lihat atribut.

Atribut %s tidak valid: %s
Atribut yang ditunjukkan untuk subrutin atau variabel tidak dikenali oleh Perl atau
oleh penangan yang disediakan pengguna. Lihat atribut.

tidak valid [] rentang "%s" di regexp
Rentang yang menyinggung sekarang ditampilkan secara eksplisit.

Karakter pemisah %s tidak valid dalam daftar atribut
(F) Sesuatu selain titik dua atau spasi terlihat di antara elemen-elemen an
daftar atribut. Jika atribut sebelumnya memiliki daftar parameter yang dikurung, mungkin—
daftar itu dihentikan terlalu cepat. Lihat atribut.

Karakter pemisah %s tidak valid dalam daftar atribut subrutin
(F) Sesuatu selain titik dua atau spasi terlihat di antara elemen-elemen a
daftar atribut subrutin. Jika atribut sebelumnya memiliki parameter yang dikurung
list, mungkin daftar itu dihentikan terlalu cepat.

meninggalkan %s efektif gagal
(F) Sementara di bawah pragma "gunakan filetest", mengganti uid yang nyata dan efektif atau
gid gagal.

Langganan Lvalue yang mengembalikan %s belum diterapkan
(F) Karena keterbatasan dalam implementasi saat ini, nilai array dan hash tidak dapat
dikembalikan dalam subrutin yang digunakan dalam konteks nilai. Lihat "Lvalue subrutin" di perlsub.

Metode %s tidak diizinkan
Lihat Kesalahan server.

%sbrace%s tidak ada di \N{}
(F) Sintaks salah nama karakter literal "\N{charname}" dalam tanda kutip ganda
konteks.

Perintah tidak ada dalam pipa terbuka
(Pipa W) Anda menggunakan konstruksi "buka(FH, "| perintah")" atau "buka(FH, "perintah |")",
tetapi perintahnya hilang atau kosong.

Nama tidak ada di "sub saya"
(F) Sintaks yang dicadangkan untuk subrutin yang dicakup secara leksikal mengharuskan mereka memiliki a
nama dengan mana mereka dapat ditemukan.

Tidak ada %s yang ditentukan untuk -%c
(F) Sakelar baris perintah yang ditunjukkan memerlukan argumen wajib, tetapi Anda belum
yang ditentukan.

Tidak ada nama paket yang diizinkan untuk variabel %s di "kami"
(F) Nama variabel yang sepenuhnya memenuhi syarat tidak diperbolehkan dalam deklarasi "kami", karena itu
tidak masuk akal di bawah semantik yang ada. Sintaks seperti itu dicadangkan untuk masa depan
ekstensi.

Tidak ada spasi yang diizinkan setelah -%c
(F) Argumen untuk sakelar baris perintah yang ditunjukkan harus segera menyusul
saklar, tanpa intervensi spasi.

tidak ada informasi offset UTC; dengan asumsi waktu setempat adalah UTC
(S) Peringatan khusus untuk VMS. Perl tidak dapat menemukan offset zona waktu lokal, jadi
itu dengan asumsi bahwa waktu sistem lokal setara dengan UTC. Jika tidak, tentukan
nama logis SYS$TIMEZONE_DIFFERENTIAL untuk menerjemahkan ke jumlah detik yang
perlu ditambahkan ke UTC untuk mendapatkan waktu lokal.

Bilangan oktal > 037777777777 non-portabel
(W portabel) Angka oktal yang Anda tentukan lebih besar dari 2**32-1 (4294967295) dan
oleh karena itu non-portabel antar sistem. Lihat perlport untuk lebih lanjut tentang portabilitas
keprihatinan.

Lihat juga perlport untuk menulis kode portabel.

panik: del_backref
(P) Gagal dalam pemeriksaan konsistensi internal saat mencoba mengatur ulang referensi yang lemah.

panik: anak popen errno read
(F) anak bercabang mengembalikan pesan yang tidak dapat dipahami tentang kesalahannya.

panik: magic_killbackrefs
(P) Gagal dalam pemeriksaan konsistensi internal saat mencoba mengatur ulang semua referensi yang lemah ke
Sebuah Objek.

Tanda kurung hilang di sekitar daftar "%s"
(Kurung W) Anda mengatakan sesuatu seperti

$foo saya, $bar = @_;

kapan maksudmu

saya ($foo, $bar) = @_;

Ingatlah bahwa ikatan "saya", "milik kami", dan "lokal" lebih erat daripada koma.

Kemungkinan interpolasi yang tidak diinginkan dari %s dalam string
(W ambigu) Dulu Perl akan mencoba menebak apakah Anda menginginkan sebuah array
interpolasi atau literal @. Tidak lagi melakukan ini; array sekarang selalu
diinterpolasi menjadi string. Ini berarti bahwa jika Anda mencoba sesuatu seperti:

cetak "fred@contoh.com";

dan array @example tidak ada, Perl akan mencetak "fred.com", yaitu
mungkin bukan yang Anda inginkan. Untuk mendapatkan tanda "@" literal dalam sebuah string, beri garis miring terbalik
sebelumnya, seperti yang Anda lakukan untuk mendapatkan tanda "$" literal.

Kemungkinan bug Y2K: %s
(W y2k) Anda menggabungkan angka 19 dengan angka lain, yang bisa menjadi
potensi masalah Tahun 2000.

pragma "attrs" tidak digunakan lagi, gunakan "sub NAME : ATTRS" sebagai gantinya
(W usang) Anda telah menulis sesuatu seperti ini:

sub lakukan
{
gunakan attrs qw(terkunci);
}

Anda harus menggunakan sintaks deklarasi baru sebagai gantinya.

sub doit : terkunci
{
...

Pragma "gunakan attrs" sekarang sudah usang, dan hanya disediakan untuk
kesesuaian. Lihat "Atribut Subrutin" di perlsub.

Akhir prematur dari tajuk skrip
Lihat Kesalahan server.

Hitung ulang dalam paket yang meluap
(F) Anda tidak dapat menentukan jumlah pengulangan yang begitu besar sehingga melebihi bilangan bulat yang Anda tandatangani.
Lihat "paket" di perlfunc.

Hitung ulang dalam unpack overflows
(F) Anda tidak dapat menentukan jumlah pengulangan yang begitu besar sehingga melebihi bilangan bulat yang Anda tandatangani.
Lihat "membongkar" di perlfunc.

alokasi ulang() memori yang dibebaskan diabaikan
(S) Rutinitas internal yang disebut alokasi ulang() pada sesuatu yang sudah dibebaskan.

Referensi sudah lemah
(W misc) Anda telah mencoba untuk melemahkan referensi yang sudah lemah. Melakukannya memiliki
tidak berpengaruh.

setpgrp tidak dapat menerima argumen
(F) Sistem Anda memiliki setpgrp() dari BSD 4.2, yang tidak membutuhkan argumen, tidak seperti POSIX
setpgid(), yang mengambil ID proses dan ID grup proses.

Aneh *+?{} pada ekspresi panjang nol
(W regexp) Anda menerapkan penghitung ekspresi reguler di tempat yang tidak menghasilkan
akal, seperti pada pernyataan lebar-nol. Coba letakkan quantifier di dalam
pernyataan sebagai gantinya. Misalnya, cara mencocokkan "abc" asalkan diikuti
dengan tiga pengulangan "xyz" adalah "/abc(?=(?:xyz){3})/", bukan "/abc(?=xyz){3}/".

beralih efektif %s tidak diterapkan
(F) Sementara di bawah pragma "gunakan filetest", kami tidak dapat mengubah yang nyata dan efektif
uid atau gid.

Perl ini tidak dapat mengatur ulang elemen lingkungan CRTL (%s)
Perl ini tidak dapat menyetel elemen lingkungan CRTL (%s=%s)
(W internal) Peringatan khusus untuk VMS. Anda mencoba mengubah atau menghapus elemen dari
array lingkungan internal CRTL, tetapi salinan Perl Anda tidak dibuat dengan CRTL yang
berisi setenv() fungsi. Anda harus membangun kembali Perl dengan CRTL yang melakukannya,
atau mendefinisikan ulang PERL_ENV_TABLES (lihat perlvms) sehingga array lingkungan bukan target
dari perubahan ke %ENV yang menghasilkan peringatan.

Terlambat menjalankan %s blok
(W void) Blok CHECK atau INIT sedang ditentukan selama run time yang tepat, ketika:
kesempatan untuk menjalankannya telah berlalu. Mungkin Anda sedang memuat file dengan
"memerlukan" atau "lakukan" ketika Anda seharusnya menggunakan "gunakan". Atau mungkin Anda harus meletakkan
"memerlukan" atau "melakukan" di dalam blok BEGIN.

tidak diketahui Buka() modus '%s'
(F) Argumen kedua dari 3-argumen Buka() tidak termasuk dalam daftar mode yang valid:
"<", ">", ">>", "+<", "+>", "+>>", "-|", "|-".

Proses tak dikenal %x mengirim pesan ke prime_env_iter: %s
(P) Sebuah kesalahan khusus untuk VMS. Perl membaca nilai untuk %ENV sebelum mengulanginya
itu, dan orang lain memasukkan pesan dalam aliran data yang diharapkan Perl. milik seseorang
sangat bingung, atau mungkin mencoba menumbangkan populasi Perl sebesar %ENV untuk kejahatan
tujuan.

Pelarian tidak dikenal \\%c lolos
(W misc) Anda menggunakan kombinasi karakter garis miring terbalik yang tidak dikenali oleh Perl.
Karakter itu dipahami secara harfiah.

Parameter atribut yang tidak diakhiri dalam daftar atribut
(F) Lexer melihat karakter kurung buka (kiri) saat mengurai atribut
list, tetapi karakter kurung penutup (kanan) yang cocok tidak ditemukan. Kamu boleh
perlu menambahkan (atau menghapus) karakter garis miring terbalik agar tanda kurung Anda seimbang. Melihat
atribut.

Daftar atribut yang tidak diakhiri
(F) Lexer menemukan sesuatu selain pengenal sederhana di awal sebuah
atribut, dan itu bukan titik koma atau awal blok. Mungkin Anda dihentikan
daftar parameter atribut sebelumnya terlalu cepat. Lihat atribut.

Parameter atribut yang tidak diakhiri dalam daftar atribut subrutin
(F) Lexer melihat karakter kurung buka (kiri) saat mengurai subrutin
daftar atribut, tetapi karakter kurung penutup (kanan) yang cocok tidak ditemukan.
Anda mungkin perlu menambahkan (atau menghapus) karakter garis miring terbalik agar tanda kurung Anda
menyeimbangkan.

Daftar atribut subrutin yang tidak diakhiri
(F) Lexer menemukan sesuatu selain pengenal sederhana di awal a
atribut subrutin, dan itu bukan titik koma atau awal blok. Mungkin kamu
mengakhiri daftar parameter atribut sebelumnya terlalu cepat.

Nilai simbol CLI "%s" terlalu panjang
(W misc) Peringatan khusus untuk VMS. Perl mencoba membaca nilai elemen %ENV
dari tabel simbol CLI, dan menemukan string yang dihasilkan lebih panjang dari 1024 karakter.
Nilai kembalian telah dipotong menjadi 1024 karakter.

Nomor versi harus berupa angka konstan
(P) Upaya untuk menerjemahkan pernyataan "gunakan Modul nn LIST" menjadi padanannya
Blok "BEGIN" menemukan inkonsistensi internal dengan nomor versi.

New tes


lib/attr
Tes kompatibilitas untuk "sub: attrs" vs "use attrs" yang lebih lama.

lib/env
Tes untuk kemampuan skalar lingkungan baru (misalnya, "gunakan Env qw($BAR);").

lib/env-array
Tes untuk kemampuan larik lingkungan baru (misalnya, "gunakan Env qw(@PATH);").

lib/io_const
Konstanta IO (SEEK_*, _IO*).

lib/io_dir
Metode IO terkait direktori (baru, baca, tutup, mundur, hapus terikat).

lib/io_multihomed
Soket INET dengan host multi-rumah.

lib/io_poll
IO pemilihan().

lib/io_unix
soket UNIX.

op/attr
Tes regresi untuk "my ($x,@y,%z) : attrs" dan .

op/tes file
Operator tes file.

op/lex_assign
Verifikasi operasi yang mengakses objek pad (leksikal dan temporer).

op/exists_sub
Verifikasi operasi "ada & sub".

Tidak kompatibel Perubahan


Perl sumber Inkompatibilitas
Waspadalah bahwa setiap peringatan baru yang telah ditambahkan atau peringatan lama yang telah ditingkatkan adalah
tidak dianggap perubahan yang tidak kompatibel.

Karena semua peringatan baru harus diminta secara eksplisit melalui sakelar "-w" atau "peringatan"
pragma, itu pada akhirnya tanggung jawab programmer untuk memastikan bahwa peringatan tersebut
diaktifkan secara bijaksana.

PERIKSA adalah kata kunci baru
Semua definisi subrutin bernama CHECK sekarang menjadi spesial. Lihat "/"Dukungan untuk CHECK
blok"" untuk informasi lebih lanjut.

Perlakuan irisan daftar undef telah berubah
Ada potensi ketidakcocokan dalam perilaku irisan daftar yang terdiri
seluruhnya dari nilai-nilai yang tidak terdefinisi. Lihat "Perilaku irisan daftar lebih konsisten".

Format $English::PERL_VERSION berbeda
Modul bahasa Inggris sekarang menetapkan $PERL_VERSION ke $^V (nilai string) daripada $] (a
nilai angka). Ini adalah potensi ketidakcocokan. Kirimkan laporan kepada kami melalui perlbug jika
Anda terpengaruh oleh ini.

Lihat "Sistem penomoran versi Perl yang ditingkatkan" untuk alasan perubahan ini.

Literal dari bentuk 1.2.3 mengurai secara berbeda
Sebelumnya, literal numerik dengan lebih dari satu titik di dalamnya ditafsirkan sebagai
angka floating point yang digabungkan dengan satu atau lebih angka. "Angka" seperti itu sekarang
diuraikan sebagai string yang terdiri dari ordinal yang ditentukan.

Misalnya, "cetak 97.98.99" digunakan untuk menghasilkan 97.9899 di versi sebelumnya, tetapi sekarang
mencetak "abc".

Lihat "Dukungan untuk string yang direpresentasikan sebagai vektor ordinal".

Kemungkinan mengubah generator nomor pseudo-acak
Program Perl yang bergantung pada reproduksi serangkaian angka pseudo-acak tertentu dapat
sekarang menghasilkan output yang berbeda karena perbaikan yang dilakukan pada acak() bawaan Kamu bisa
gunakan "sh Configure -Drandfunc=rand" untuk mendapatkan perilaku lama.

Lihat "Pembuat angka pseudo-acak yang lebih baik".

Fungsi hash untuk kunci hash telah berubah
Meskipun hash Perl tidak melestarikan urutan, urutan yang tampaknya acak
ditemui ketika iterasi pada isi hash sebenarnya ditentukan oleh
algoritma hashing yang digunakan. Perbaikan dalam algoritma dapat menghasilkan urutan acak yang
is berbeda dari versi sebelumnya, terutama saat iterasi pada hash.

Lihat "Perilaku hash kasus terburuk yang lebih baik" untuk informasi tambahan.

"undef" gagal pada nilai hanya baca
Menggunakan operator "undef" pada nilai readonly (seperti $1) memiliki efek yang sama seperti
menetapkan "undef" ke nilai readonly--itu melempar pengecualian.

Bit close-on-exec dapat diatur pada pegangan pipa dan soket
Pegangan pipa dan soket juga sekarang tunduk pada perilaku close-on-exec yang ditentukan
oleh variabel khusus $^F.

Lihat "Perilaku close-on-exec yang lebih konsisten".

Menulis "$$1" berarti "${$}1" tidak didukung
Perl 5.004 menghentikan interpretasi $$1 dan sejenisnya dalam interpolasi
string berarti "$$ . "1"", tetapi masih mengizinkannya.

Di Perl 5.6.0 dan yang lebih baru, "$$1" selalu berarti "${$1}".

menghapus(), setiap(), nilai () dan H)"
beroperasi pada alias untuk nilai, bukan salinan

menghapus(), setiap(), nilai () dan hash (misalnya "\(%h)") dalam konteks daftar mengembalikan
nilai aktual dalam hash, bukan salinan (seperti yang digunakan di versi sebelumnya).
Idiom khas untuk menggunakan konstruksi ini menyalin nilai yang dikembalikan, tetapi ini dapat membuat
perbedaan yang signifikan saat membuat referensi ke nilai yang dikembalikan. Kunci di
hash masih dikembalikan sebagai salinan saat iterasi pada hash.

Lihat juga "menghapus(), setiap(), nilai () dan iterasi hash lebih cepat".

vec(EXPR,OFFSET,BITS) memberlakukan kekuatan dua BITS
vektor() menghasilkan kesalahan run-time jika argumen BITS bukan kekuatan dua yang valid
bilangan bulat.

Teks dari beberapa keluaran diagnostik telah berubah
Sebagian besar referensi untuk operasi Perl internal dalam diagnostik telah diubah menjadi
lebih deskriptif. Ini mungkin menjadi masalah untuk program yang mungkin salah mengandalkan
teks diagnostik yang tepat untuk berfungsi dengan baik.

"%@" telah dihapus
Variabel khusus tidak berdokumen "%@" yang digunakan untuk mengakumulasi kesalahan "latar belakang"
(seperti yang terjadi di MENGHANCURKAN()) telah dihapus, karena bisa
berpotensi mengakibatkan kebocoran memori.

dalam kurung tidak() berperilaku seperti operator daftar
Operator "tidak" sekarang berada di bawah "jika terlihat seperti fungsi, ia berperilaku seperti a
aturan fungsi".

Akibatnya, formulir dalam kurung dapat digunakan dengan "grep" dan "peta". Pengikut
konstruksi dulunya merupakan kesalahan sintaksis sebelumnya, tetapi berfungsi seperti yang diharapkan sekarang:

grep not($_), @hal;

Di sisi lain, menggunakan "tidak" dengan irisan daftar literal mungkin tidak berfungsi. Pengikut
konstruksi yang diizinkan sebelumnya:

tidak dicetak (1,2,3)[0];

perlu ditulis dengan tanda kurung tambahan sekarang:

cetak tidak((1,2,3)[0]);

Perilaku tetap tidak terpengaruh ketika "tidak" tidak diikuti oleh tanda kurung.

Semantik prototipe bareword "(*)" telah berubah
Semantik dari prototipe bareword "*" telah berubah. Perl 5.005 selalu dipaksa
argumen skalar sederhana ke typeglob, yang tidak berguna dalam situasi di mana
subrutin harus membedakan antara skalar sederhana dan typeglob. Perilaku baru
adalah untuk tidak memaksa argumen bareword ke typeglob. Nilainya akan selalu terlihat
baik sebagai skalar sederhana atau sebagai referensi ke typeglob.

Lihat "Prototipe kata sandi yang lebih fungsional (*)".

Semantik operator bit mungkin telah berubah pada platform 64-bit
Jika platform Anda adalah 64-bit asli atau jika Perl telah dikonfigurasi untuk digunakan
Bilangan bulat 64-bit, yaitu, $Config{ivsize} adalah 8, mungkin ada potensi ketidakcocokan
dalam perilaku operator numerik bitwise (& | ^ ~ << >>). Operator-operator ini dulu
beroperasi secara ketat pada 32 bit bilangan bulat yang lebih rendah di versi sebelumnya, tetapi sekarang
beroperasi di seluruh lebar integral asli. Secara khusus, perhatikan bahwa unary "~"
akan menghasilkan hasil yang berbeda pada platform yang memiliki $Config{ivsize} yang berbeda. Untuk
portabilitas, pastikan untuk menutupi kelebihan bit dalam hasil unary "~", misalnya,
"~$x & 0xffffffff".

Lihat "Operator bit mendukung lebar integer asli penuh".

Lebih banyak bawaan menodai hasil mereka
Seperti yang dijelaskan dalam "Fitur keamanan yang ditingkatkan", mungkin ada lebih banyak sumber taint di a
program Perl.

Untuk menghindari perilaku tainting baru ini, Anda dapat membangun Perl dengan opsi Configure
"-Accflags=-DINCOMPLETE_TAINTS". Hati-hati bahwa biner perl berikutnya mungkin tidak aman.

C sumber Inkompatibilitas
"PERL_POLLUTE"
Rilis 5.005 nama simbol global lama dengan menyediakan makro praprosesor
untuk kompatibilitas sumber ekstensi. Pada rilis 5.6.0, praprosesor ini
definisi tidak tersedia secara default. Anda perlu mengkompilasi Perl secara eksplisit dengan
"-DPERL_POLLUTE" untuk mendapatkan definisi ini. Untuk ekstensi masih menggunakan yang lama
simbol, opsi ini dapat ditentukan melalui MakeMaker:

perl Makefile.PL POLUTE=1

"PERL_IMPLICIT_CONTEXT"
Opsi build baru ini menyediakan satu set makro untuk semua fungsi API sedemikian rupa sehingga:
interpreter implisit/argumen konteks utas diteruskan ke setiap fungsi API. Sebagai
hasil dari ini, sesuatu seperti "sv_setsv(foo,bar)" sama dengan permintaan makro yang
sebenarnya diterjemahkan menjadi sesuatu seperti "Perl_sv_setsv(my_perl,foo,bar)". Sementara ini
umumnya diharapkan tidak memiliki masalah kompatibilitas sumber yang signifikan,
perbedaan antara panggilan fungsi makro dan nyata perlu dipertimbangkan.

Ini berarti ada is masalah kompatibilitas sumber sebagai akibat dari ini jika Anda
ekstensi mencoba menggunakan pointer ke salah satu fungsi Perl API.

Perhatikan bahwa masalah di atas tidak relevan dengan build default Perl, yang
antarmuka terus cocok dengan versi sebelumnya (tetapi tunduk pada opsi lain
dijelaskan di sini).

Lihat "Latar Belakang dan PERL_IMPLICIT_CONTEXT" di perlguts untuk informasi rinci tentang
konsekuensi membangun Perl dengan opsi ini.

CATATAN: PERL_IMPLICIT_CONTEXT secara otomatis diaktifkan setiap kali Perl dibangun
dengan salah satu dari -Dusethreads, -Dusemultiplicity, atau keduanya. Bukan itu
dimaksudkan untuk diaktifkan oleh pengguna saat ini.

"PERL_POLLUTE_MALLOC"
Mengaktifkan malloc Perl di rilis 5.005 dan sebelumnya menyebabkan namespace dari
keluarga fungsi malloc sistem akan diambil alih oleh versi Perl, karena oleh
default mereka menggunakan nama yang sama. Selain menyebabkan masalah pada platform yang tidak
memungkinkan fungsi-fungsi ini diganti dengan bersih, ini juga berarti bahwa versi sistem
tidak dapat dipanggil dalam program yang menggunakan malloc Perl. Versi Perl . sebelumnya
telah membiarkan perilaku ini ditekan dengan HIDEMYMALLOC dan EMBEDMYMALLOC
definisi praprosesor.

Pada rilis 5.6.0, keluarga fungsi malloc Perl memiliki nama default yang berbeda
dari versi sistem. Anda perlu mengkompilasi Perl secara eksplisit dengan
"-DPERL_POLLUTE_MALLOC" untuk mendapatkan perilaku yang lebih lama. HIDEMYMALLOC dan EMBEDMYMALLOC
tidak berpengaruh, karena perilaku yang mereka aktifkan sekarang menjadi default.

Perhatikan bahwa fungsi-fungsi ini berfungsi tidak merupakan API alokasi memori Perl. Lihat "Memori
Alokasi" di perlguts untuk informasi lebih lanjut tentang itu.

Cocok C sumber API Perubahan
"PATCHLEVEL" sekarang menjadi "PERL_VERSION"
Makro cpp "PERL_REVISION", "PERL_VERSION", dan "PERL_SUBVERSION" sekarang
tersedia secara default dari perl.h, dan mencerminkan revisi dasar, level patch, dan
subversi masing-masing. "PERL_REVISION" tidak memiliki padanan sebelumnya, sementara
"PERL_VERSION" dan "PERL_SUBVERSION" sebelumnya tersedia sebagai "PATCHLEVEL" dan
"SUBVERSI".

Nama-nama baru menyebabkan lebih sedikit polusi pada cpp namespace dan mencerminkan apa angkanya
telah datang untuk berdiri untuk dalam praktek umum. Untuk kompatibilitas, nama-nama lama masih
didukung ketika tingkat patch.h secara eksplisit disertakan (seperti yang dipersyaratkan sebelumnya), jadi ada
tidak ada ketidakcocokan sumber dari perubahan.

Biner Inkompatibilitas
Secara umum, build default rilis ini diharapkan kompatibel dengan biner untuk
ekstensi yang dibuat dengan rilis 5.005 atau versi pemeliharaannya. Namun, spesifik
platform mungkin memiliki kompatibilitas biner yang rusak karena perubahan default yang digunakan dalam
file petunjuk. Oleh karena itu, pastikan untuk selalu memeriksa file README khusus platform
untuk setiap catatan yang bertentangan.

Usethreads atau usemultiplicity build adalah tidak biner kompatibel dengan yang sesuai
dibangun di 5.005.

Pada platform yang memerlukan daftar ekspor eksplisit (AIX, OS/2 dan Windows, di antaranya
lainnya), simbol internal murni seperti fungsi parser dan opcode run time tidak
diekspor secara default. Perl 5.005 digunakan untuk mengekspor semua fungsi terlepas dari apakah mereka
dianggap sebagai bagian dari API publik atau tidak.

Untuk daftar lengkap fungsi API publik, lihat perlapi.

Diketahui Masalah


Lokalisasi a diikat hash elemen mungkin bocor ingatan
Pada rilis 5.6.1, ada kebocoran yang diketahui saat kode seperti ini dijalankan:

gunakan Tie::Hash;
ikat %tie_hash saya => 'Tie::StdHash';

...

local($tie_hash{Foo}) = 1; # kebocoran

Diketahui uji kegagalan
· 64-bit build

Subtest #15 dari lib/bt mungkin gagal pada build 64-bit pada platform seperti HP-UX PA64
dan Linux IA64. Masalah itu masih diselidiki.

Tes lib/io_multihomed mungkin hang di HP-UX jika Perl telah dikonfigurasi menjadi 64-bit.
Karena platform 64-bit lainnya tidak bertahan dalam pengujian ini, HP-UX dicurigai. Semua lainnya
tes lulus dalam 64-bit HP-UX. Tes mencoba membuat dan terhubung ke "multihomed"
socket (soket yang memiliki banyak alamat IP).

Perhatikan bahwa dukungan 64-bit masih eksperimental.

· Kegagalan tes Thread

Subtes 19 dan 20 dari tes lib/thr5005.t diketahui gagal karena fundamental
permasalahan dalam implementasi threading 5.005. Ini bukan kegagalan baru--Perl
5.005_0x memiliki bug yang sama, tetapi tidak memiliki tes ini. (Perhatikan bahwa dukungan untuk
threading gaya 5.005 tetap eksperimental.)

· LANGKAH BERIKUTNYA 3.3 kegagalan tes POSIX

Dalam NEXTSTEP 3.3p2 implementasi dari waktu luang(3) dalam sistem operasi
perpustakaan bermasalah: format %j menghitung hari dalam sebulan mulai dari nol,
yang, meskipun logis bagi pemrogram, akan menyebabkan subtes 19 hingga 27 dari
tes lib/posix mungkin gagal.

· Tru64 (alias Digital UNIX, alias DEC OSF/1) kegagalan uji lib/sdbm dengan gcc

Jika dikompilasi dengan gcc 2.95 tes lib/sdbm akan gagal (dump core). Obatnya adalah dengan menggunakan
cc vendor, dilengkapi dengan sistem operasi dan menghasilkan kode yang bagus.

EBCDIC platform tidak sepenuhnya didukung
Dalam rilis Perl sebelumnya, lingkungan EBCDIC seperti OS390 (juga dikenal sebagai Edisi Terbuka
MVS) dan VM-ESA didukung. Karena perubahan yang diperlukan oleh dukungan UTF-8 (Unicode),
platform EBCDIC tidak didukung di Perl 5.6.0.

Rilis 5.6.1 meningkatkan dukungan untuk platform EBCDIC, tetapi tidak sepenuhnya didukung
belum.

UNICOS/mk CC kegagalan selama Konfigurasi menjalankan
Di UNICOS/mk, kesalahan berikut mungkin muncul selama menjalankan Konfigurasi:

Menebak simbol mana yang ditentukan oleh kompiler C dan preprosesor Anda...
CC-20 cc: File ERROR = try.c, Baris = 3
...
saklar rusak yylook 79 saklar rusak yylook 79 saklar rusak yylook 79 saklar rusak yylook 79#ifdef A29K
...
4 kesalahan terdeteksi dalam kompilasi "try.c".

Pelakunya adalah awk rusak UNICOS/mk. Efeknya untungnya agak ringan: Perl
itu sendiri tidak terpengaruh oleh kesalahan, hanya utilitas h2ph yang datang dengan Perl, dan
yang agak jarang dibutuhkan hari ini.

panah operator dan array
Ketika argumen kiri ke operator panah "->" adalah array, atau operator "skalar"
beroperasi pada array, hasil operasi harus dianggap salah. Untuk
contoh:

@x->[2]
skalar(@x)->[2]

Ekspresi ini akan mendapatkan kesalahan run-time di beberapa rilis Perl di masa mendatang.

Eksperimental fitur
Seperti dibahas di atas, banyak fitur masih eksperimental. Antarmuka dan implementasi
fitur ini dapat berubah, dan dalam kasus ekstrim, bahkan dapat dihapus dalam
beberapa rilis Perl di masa mendatang. Fitur-fitur tersebut antara lain sebagai berikut:

Thread
Unicode
Dukungan 64-bit
Nilai subrutin
Referensi lemah
Tipe data pseudo-hash
Paket Kompilator
Implementasi internal dari file globbing
Modul DB
Konstruksi kode ekspresi reguler:
"(?{ kode })" dan "(??{ kode })"

Usang Diagnostik


Sintaks kelas karakter [: :] dicadangkan untuk ekstensi mendatang
(W) Dalam kelas karakter ekspresi reguler ([]) sintaks dimulai dengan "[:"
dan diakhiri dengan ":]" dicadangkan untuk ekstensi mendatang. Jika Anda perlu untuk mewakili
urutan karakter itu di dalam kelas karakter ekspresi reguler, cukup kutip
kurung siku dengan garis miring terbalik: "\[:" dan ":\]".

Nama logika yang salah bentuk |%s| di prime_env_iter
(W) Peringatan khusus untuk VMS. Nama logis ditemukan saat bersiap untuk
ulangi lebih dari %ENV yang melanggar aturan sintaksis yang mengatur nama logis. Karena
itu tidak dapat diterjemahkan secara normal, dilewati, dan tidak akan muncul di %ENV. Ini
mungkin kejadian yang tidak berbahaya, karena beberapa paket perangkat lunak mungkin secara langsung memodifikasi logika
nama tabel dan memperkenalkan nama tidak standar, atau mungkin menunjukkan bahwa nama logis
tabel telah rusak.

Dalam string, @%s sekarang harus ditulis sebagai \@%s
Deskripsi kesalahan ini digunakan untuk mengatakan:

(Suatu hari nanti itu hanya akan mengasumsikan bahwa @ yang tidak di-backslash
menginterpolasi array.)

Hari itu telah tiba, dan kesalahan fatal ini telah dihapus. Itu telah digantikan oleh
peringatan non-fatal sebagai gantinya. Lihat "Array sekarang selalu diinterpolasi menjadi tanda kutip ganda
string" untuk detailnya.

Kemungkinan masalah prioritas pada %s
(W) Kompilator menemukan kata kosong yang diharapkan bersyarat, yang seringkali
menunjukkan bahwa sebuah || atau && diuraikan sebagai bagian dari argumen terakhir dari yang sebelumnya
membangun, misalnya:

buka FOO || mati;

regexp terlalu besar
(F) Implementasi ekspresi reguler saat ini menggunakan short sebagai offset alamat
dalam sebuah string. Sayangnya ini berarti bahwa jika ekspresi reguler dikompilasi menjadi
lebih lama dari 32767, itu akan meledak. Biasanya ketika Anda menginginkan ekspresi reguler ini
besar, ada cara yang lebih baik untuk melakukannya dengan banyak pernyataan. Lihat perlre.

Penggunaan "$$ " berarti "${$} " sudah ditinggalkan
(D) Versi Perl sebelum 5.004 salah menafsirkan penanda jenis apa pun yang diikuti oleh "$" dan a
angka. Misalnya, "$$0" salah diartikan sebagai "${$}0" bukannya "${$0}".
Bug ini (kebanyakan) diperbaiki di Perl 5.004.

Namun, pengembang Perl 5.004 tidak dapat memperbaiki bug ini sepenuhnya, karena pada
setidaknya dua modul yang banyak digunakan bergantung pada arti lama "$$0" dalam sebuah string. Jadi Perl
5.004 masih mengartikan "$$ " dengan cara lama (rusak) di dalam string; tapi itu
menghasilkan pesan ini sebagai peringatan. Dan di Perl 5.005, perlakuan khusus ini akan
berhenti.

Pelaporan Bug


Jika Anda menemukan apa yang menurut Anda bug, Anda dapat memeriksa artikel yang baru-baru ini diposting ke
comp.lang.perl.misc newsgroup. Mungkin juga ada informasi di http://www.perl.com/ ,
Halaman Beranda Perl.

Jika Anda yakin memiliki bug yang belum dilaporkan, jalankan perlbug program disertakan dengan
rilis Anda. Pastikan untuk memangkas bug Anda menjadi test case yang kecil tapi cukup. Bugmu
laporan, bersama dengan output dari "perl -V", akan dikirim ke perlbug@perl.org menjadi
dianalisis oleh tim porting Perl.

Gunakan perl561delta online menggunakan layanan onworks.net



Program online Linux & Windows terbaru