目錄

名稱

perl583delta - perl v5.8.3 的新功能

說明

此文件說明 5.8.2 發行版和 5.8.3 發行版的差異。

如果您要從較早的發行版(例如 5.6.1)升級,請先閱讀 perl58delta,其中說明了 5.6.0 和 5.8.0 之間的差異,以及 perl581deltaperl582delta,其中說明了 5.8.0、5.8.1 和 5.8.2 之間的差異

不兼容變更

沒有與 5.8.2 不兼容的變更。

核心強化

現在,SCALAR 方法可供繫結雜湊使用。當繫結雜湊用於標量內容時,會呼叫此方法,例如

    if (%tied_hash) {
	...
    }

舊有的行為是 %tied_hash 會傳回在 hash 被綁定之前會傳回的任何東西(通常是 0)。在沒有 SCALAR 方法的情況下,新的行為是在 each 迭代的過程中傳回 TRUE,否則呼叫 FIRSTKEY 來檢查 hash 是否為空(確保後續的 each 也會從呼叫 FIRSTKEY 開始)。請參閱 "perltie 中的 SCALAR" 以取得完整的詳細資料和注意事項。

模組和實用程式

CGI
Cwd
Digest
Digest::MD5
Encode
File::Spec
FindBin

提供一個函式 again 來解決不同目錄中的模組想要使用 FindBin 的問題。

List::Util

現在您可以將參考減弱為唯讀值。

Math::BigInt
PodParser
Pod::Perldoc
POSIX
Unicode::Collate
Unicode::Normalize
Test::Harness
threads::shared

cond_wait 有新的兩個引數形式。已新增 cond_timedwait

實用程式變更

find2perl 現在假設 -print 為預設動作。以前,需要明確指定。

一個新的實用程式 prove,讓您可以在命令列中輕鬆執行單一回歸測試。prove 是 Test::Harness 的一部分,早期 Perl 版本的使用者可以從 CPAN 安裝。

新的文件

文件已在某些地方進行修訂,以產生更多標準的手冊頁。

特殊程式碼區塊(BEGIN、CHECK、INIT、END)的文件已獲得改善。

安裝和組態改善

Perl 現在可在 OpenVMS I64 上建置

選定的錯誤修正

在 UTF8 字串上使用 substr() 可能會導致後續存取該字串時傳回垃圾。這是由於快取不正確的 UTF8 偏移量所致,現在已修正。

當相同的 join() 陳述式用於處理 8 位元資料(之前已處理 UTF8 資料)時,join() 可能會傳回垃圾,因為該陳述式的暫時工作區上的旗標未正確重設。現在已修正。

當 $a 或 $b 為 undef 時,$a .. $b 現在會按預期運作

使用帶有連結雜湊的 Unicode 鍵現在應該可以正確運作。

讀取 $^E 現在會保留 $!。先前,實作 $^E 的 C 程式碼不會保留 errno,因此讀取 $^E 可能會導致 errno$! 意外變更。

重新進入函式將(再次)與 C++ 一起運作。5.8.2 引進了一個錯誤修正,意外中斷了以 C++ 編寫的 Perl 擴充套件的編譯

新的或已變更的診斷

致命錯誤「DESTROY 為已死的物件建立新的參考」現在已記錄在 perldiag 中。

已變更的內部結構

雜湊碼已重新整理以減少來源重複。外部介面不變,且除了上述說明的錯誤修正之外,行為不應有變更。

hv_clear_placeholders 現在是 perl API 的一部分

已整理一些 C 巨集。特別是會建立暫時局部變數的巨集現在會以更具防禦性的方式命名這些變數,這應可避免名稱衝突的錯誤。

<signal.h> 現在總是會包含在內。

組態和建置

Configure 現在會呼叫回呼,而不論呼叫它們的變數值為何。先前,回呼只會在 case $variable $define) 分支中呼叫。此變更應只會影響撰寫組態提示檔案的平台維護人員。

特定平台的問題

回歸測試 ext/threads/shared/t/wait.t 會在早期的 RedHat 9 和 HP-UX 10.20 上失敗,原因是其執行緒實作中的錯誤。RedHat 使用者應參閱 https://rhn.redhat.com/errata/RHBA-2003-136.html 並考慮升級其 glibc。

已知的問題

分離執行緒尚未在 Windows 上獲得支援,因為它們可能會導致記憶體存取違規問題。

suidperl 中開啟指令碼時有一個已知的競爭條件。suidperl 預設不會建置或安裝,且自 perl 5.8.0 起已不建議使用。建議您使用 sudo(http://www.courtesan.com/sudo/)等工具取代 suidperl。

我們有一堆未解決的錯誤。處理錯誤和錯誤報告是乏味的工作;這不是志工勞動的理想選擇,但這是我們擁有的全部。

perl5 開發團隊正在實作變更以協助解決此問題,預計將於 2004 年初上線。

未來方向

下一個維護版本 (5.8.4) 的程式碼凍結日期為 2004 年 3 月 31 日,預計於 4 月中旬發布。類似地,5.8.5 的凍結日期為 6 月底,預計於 7 月中旬發布。

訃聞

Perl 駭客、perlreref 作者,以及 CPAN 貢獻者 Iain 'Spoon' Truskett 於 2003 年 12 月 29 日突然過世,享年 24 歲。我們將懷念他。

回報錯誤

如果您發現您認為是錯誤的問題,您可以查看最近張貼到 comp.lang.perl.misc 新聞群組的文章,以及 http://bugs.perl.org 上的 perl 錯誤資料庫。Perl 首頁 http://www.perl.org 上也可能有相關資訊。

如果您認為您發現了未回報的錯誤,請執行您的版本隨附的 perlbug 程式。務必將您的錯誤簡化為一個微小但足夠的測試案例。您的錯誤回報,以及 perl -V 的輸出,將會傳送至 perlbug@perl.org,供 Perl 移植團隊分析。您可以在 http://bugs.perl.org/ 瀏覽和搜尋 Perl 5 錯誤。

另請參閱

Changes 檔案,提供變更內容的詳盡說明。

INSTALL 檔案,說明如何建置 Perl。

README 檔案,提供一般資訊。

ArtisticCopying 檔案,提供版權資訊。