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 本身的条款重新发布和/或修改它。
类方法。 返回一个新的、未附加的标量句柄。如果给出了任何参数,则将其发送到 open()。
实例方法。 在一个新的标量上打开标量句柄,该标量由 SCALARREF 指向。如果没有给出 SCALARREF,则会创建一个“私有”标量来保存文件数据。
成功时返回 self 对象,错误时返回未定义。
实例方法。 标量句柄是否已打开?
实例方法。 将标量句柄与其底层标量分离。在销毁时自动完成。
实例方法。 无操作,提供用于 OO 兼容性。
实例方法。 返回下一个字符,如果没有字符则返回 undef。
实例方法。 返回下一行,字符串末尾返回 undef。可以在数组上下文中安全地调用。目前,行以“\n”分隔。
实例方法。 获取所有剩余的行。如果在标量上下文中意外调用,它将 croak()。
实例方法。 将 ARGS 打印到底层标量。
警告: 这仍然总是导致 seek 到字符串的末尾,但如果您执行 seek() 和 tell(),在后续 print() 之前显式 seek-to-end 仍然更安全。
实例方法。 从标量中读取一些字节。返回实际读取的字节数,文件末尾返回 0,错误返回 undef。
实例方法。 将一些字节写入标量。
实例方法。 从标量中读取一些字节。返回实际读取的字节数,文件末尾返回 0,错误返回 undef。
实例方法。 将一些字节写入标量。
实例方法。 无操作,提供用于 OO 兼容性。
实例方法。 无操作,提供用于 OO 兼容性。
实例方法。 清除错误和 EOF 标志。无操作。
实例方法。 我们是否已到达文件末尾?
实例方法。 在流中跳转到给定位置。
实例方法。 与 seek OFFSET, WHENCE
相同,参见。
实例方法。 返回流中的当前位置,以数字偏移量表示。
实例方法。 已弃用并被忽略。 遵守当前的 $/, 像 IO::Handle 一样?在 1.x 中默认值为 false,但在 2.x 及更高版本中被硬编码为 true。
实例方法。 设置当前位置,使用 getpos()
返回的不透明值。
实例方法。 返回字符串中的当前位置,以不透明对象表示。
实例方法。 返回对底层标量的引用。
在 5.005_57 之前,Perl 的 TIEHANDLE 规范是不完整的;它缺少对 seek()
、tell()
和 eof()
的支持。在 5.005_57 之前,尝试对 IO::Scalar 使用这些函数将不起作用。IO::Scalar 不会调用相关方法;更糟糕的是,这种错误可能会潜伏一段时间。如果你开启了警告(通过 $^W
或 perl -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
$Id: Scalar.pm,v 1.6 2005/02/10 21:21:53 dfs Exp $
David F. Skoll ([email protected]).
Eryq ([email protected]). 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()
的性能,并添加了 sysread
和 syswrite
。
B. K. Oxley (binkley), 为其字符串化和继承改进,以及各种好主意。
Doug Wilson, 为其 IO::Handle 继承和自动绑定。
IO::String,它非常相似,但设计得更近,并且考虑到 IO::Handle 类的接口,因此您可以混合使用 OO 和原生文件句柄,而无需使用 tied()。
注意:从 2.x 版本开始,这些类都像其 IO::Handle 对应类一样工作,因此我们具有与 IO::String 相当的功能。