目錄

名稱

Test::Builder::IO::Scalar - Test::Builder 的 IO::Scalar 副本

說明

這是 IO::Scalar 的副本,隨附 Test::Builder,以支援 Perl 5.6 上的純量參考作為檔案代號。較新版本的 Perl 只需使用 open() 內建的支援。

Test::Builder 無法依賴其他模組,除非經過仔細考量,因此它已直接複製到發行版中。

版權和授權

此檔案來自「IO-stringy」Perl5 工具包。

版權所有 (c) 1996 Eryq。保留所有權利。版權所有 (c) 1999,2001 ZeeGee Software Inc。保留所有權利。

此程式為免費軟體;您可以在與 Perl 相同的條款下重新散發或修改它。

建構

new [ARGS...]

類別方法。傳回一個新的、未附加的純量句柄。如果給定任何參數,則會傳送給 open()。

open [SCALARREF]

實例方法。在新的純量上開啟純量句柄,由 SCALARREF 指向。如果未給定 SCALARREF,則會建立一個「私人」純量來儲存檔案資料。

成功時傳回 self 物件,錯誤時傳回未定義。

opened

實例方法。純量句柄是否在某個項目上開啟?

close

實例方法。解除純量句柄與其底層純量的關聯。會在銷毀時自動執行。

輸入和輸出

flush

實例方法。無操作,提供給 OO 相容性。

getc

實例方法。傳回下一個字元,如果沒有則傳回未定義。

getline

實例方法。傳回下一行,或在字串結束時傳回未定義。可以在陣列內容中安全呼叫。目前,行由「\n」分隔。

getlines

實例方法。取得所有剩餘行。如果意外在純量內容中呼叫,它會 croak()。

實例方法。將 ARGS 列印到底層純量。

警告:這會持續導致尋找字串結尾,但如果你執行 seek() 和 tell(),在後續 print() 之前明確尋找結尾仍然比較安全。

read BUF, NBYTES, [OFFSET]

實例方法。從純量讀取一些位元組。傳回實際讀取的位元組數,在檔案結束時傳回 0,在錯誤時傳回未定義。

write BUF, NBYTES, [OFFSET]

實例方法。將一些位元組寫入純量。

sysread BUF, LEN, [OFFSET]

實例方法。從純量讀取一些位元組。傳回實際讀取的位元組數,在檔案結束時傳回 0,在錯誤時傳回未定義。

syswrite BUF, NBYTES, [OFFSET]

實例方法。將一些位元組寫入純量。

Seeking/telling and other attributes

autoflush

實例方法。無操作,提供給 OO 相容性。

binmode

實例方法。無操作,提供給 OO 相容性。

clearerr

實例方法。清除錯誤和 EOF 旗標。無作用。

eof

實例方法。我們是否已在檔案結尾?

seek OFFSET, WHENCE

實例方法。在串流中尋找特定位置。

sysseek OFFSET, WHENCE

實例方法。seek OFFSET, WHENCE 相同,q.v.

tell

實例方法。傳回串流中目前的數字偏移量位置。

use_RS [YESNO]

實例方法。已棄用且已忽略。遵循 $/, 的目前設定,就像 IO::Handle 所做的一樣?在 1.x 中預設為 false,但在 2.x 和更新版本中強制設定為 true。

setpos POS

實例方法。使用 getpos() 傳回的不透明值設定目前位置。

getpos

實例方法。傳回字串中目前的不透明物件位置。

sref

實例方法。傳回基礎純量變數的參考。

WARNINGS

Perl 的 TIEHANDLE 規格在 5.005_57 之前不完整;它缺少對 seek()tell()eof() 的支援。在 5.005_57 之前嘗試對 IO::Scalar 使用這些函式將無法運作。IO::Scalar 將不會呼叫相關方法;更糟的是,這種錯誤可能會潛伏一段時間。如果您開啟警告(透過 $^Wperl -w),並且您看到類似以下內容...

attempt to seek on unopened filehandle

...那麼您可能嘗試對舊版 Perl 的 IO::Scalar 使用其中一個函式。解決方法很簡單,只要使用 OO 版本即可;例如

$SH->seek(0,0);    ### GOOD: will work on any 5.005
seek($SH,0,0);     ### WARNING: will only work on 5.005_57 and beyond

VERSION

$Id: Scalar.pm,v 1.6 2005/02/10 21:21:53 dfs Exp $

AUTHORS

Primary Maintainer

David F. Skoll (dfs@roaringpenguin.com)。

Principal author

Eryq (eryq@zeegee.com)。ZeeGee Software Inc 總裁 (http://www.zeegee.com)。

其他貢獻者

完整的貢獻者名單總是包含 "IO::Stringy 中的變更記錄" 中所提到的各位。但無論如何,特別感謝以下個人提供的寶貴貢獻(如果我忘記或拼錯您的名字,請寄信給我!)

Andy Glew,貢獻了 getc()

Brandon Browning,建議了 opened()

David Richter,找出並修復了 PRINTF() 中的錯誤。

Eric L. Brine,提供了使用偏移量的 read() 和 write() 實作。

Richard Jones,提供了大幅提升 getline() 效能的修補程式,並加入了 sysreadsyswrite

B. K. Oxley (binkley),提供了字串化和繼承的改善,以及許多好點子。

Doug Wilson,提供了 IO::Handle 繼承和自動繫結。

另請參閱

IO::String,它非常類似,但設計得較為新穎,並考量了類似 IO::Handle 的介面,因此您可以在不使用 tied() 的情況下混合使用 OO 和原生檔案句柄。

注意:從 2.x 版開始,這些類別都像它們的 IO::Handle 對應類別一樣運作,因此我們具備了與 IO::String 相當的功能。