Manpages - Test_Builder_IO_Scalar.3perl
Table of Contents
NAME
Test::Builder::IO::Scalar - A copy of IO::Scalar for Test::Builder
DESCRIPTION
This is a copy of IO::Scalar which ships with Test::Builder to support
scalar references as filehandles on Perl 5.6. Newer versions of Perl
simply use open()
’s built in support.
Test::Builder can not have dependencies on other modules without careful consideration, so its simply been copied into the distribution.
COPYRIGHT and LICENSE
This file came from the IO-stringy Perl5 toolkit.
Copyright (c) 1996 by Eryq. All rights reserved. Copyright (c) 1999,2001 by ZeeGee Software Inc. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Construction
- new [ARGS…]
- Class method. Return a new, unattached scalar handle. If any arguments are given, they’re sent to open().
- open [SCALARREF]
- Instance method. Open the scalar handle on a new scalar, pointed to by SCALARREF. If no SCALARREF is given, a private scalar is created to hold the file data. Returns the self object on success, undefined on error.
- opened
- Instance method. Is the scalar handle opened on something?
- close
- Instance method. Disassociate the scalar handle from its underlying scalar. Done automatically on destroy.
Input and output
- flush
- Instance method. No-op, provided for OO compatibility.
- getc
- Instance method. Return the next character, or undef if none remain.
- getline
- Instance method. Return the next line, or undef on end of string. Can safely be called in an array context. Currently, lines are delimited by \n.
- getlines
- Instance method. Get all remaining lines. It will croak() if accidentally called in a scalar context.
- print ARGS…
- Instance method. Print ARGS to the underlying scalar. Warning: this continues to always cause a seek to the end of the string, but if you perform *seek()*s and *tell()*s, it is still safer to explicitly seek-to-end before subsequent *print()*s.
- read BUF, NBYTES, [OFFSET]
- Instance method. Read some bytes from the scalar. Returns the number of bytes actually read, 0 on end-of-file, undef on error.
- write BUF, NBYTES, [OFFSET]
- Instance method. Write some bytes to the scalar.
- sysread BUF, LEN, [OFFSET]
- Instance method. Read some bytes from the scalar. Returns the number of bytes actually read, 0 on end-of-file, undef on error.
- syswrite BUF, NBYTES, [OFFSET]
- Instance method. Write some bytes to the scalar.
Seeking/telling and other attributes
- autoflush
- Instance method. No-op, provided for OO compatibility.
- binmode
- Instance method. No-op, provided for OO compatibility.
- clearerr
- Instance method. Clear the error and EOF flags. A no-op.
- eof
- Instance method. Are we at end of file?
- seek OFFSET, WHENCE
- Instance method. Seek to a given position in the stream.
- sysseek OFFSET, WHENCE
- Instance method. Identical to
seek OFFSET, WHENCE
, q.v. - tell
- Instance method. Return the current position in the stream, as a numeric offset.
- use_RS [YESNO]
- Instance method. Deprecated and ignored. Obey the current setting of $/, like IO::Handle does? Default is false in 1.x, but cold-welded true in 2.x and later.
- setpos POS
- Instance method. Set the current position, using the
opaque value returned by
getpos()
. - getpos
- Instance method. Return the current position in the string, as an opaque object.
- sref
- Instance method. Return a reference to the underlying scalar.
WARNINGS
Perl’s TIEHANDLE spec was incomplete prior to 5.005_57; it was missing
support for seek()
, tell()
, and eof()
. Attempting to use these
functions with an IO::Scalar will not work prior to 5.005_57. IO::Scalar
will not have the relevant methods invoked; and even worse, this kind of
bug can lie dormant for a while. If you turn warnings on (via $^W
or
perl -w
), and you see something like this…
attempt to seek on unopened filehandle
…then you are probably trying to use one of these functions on an IO::Scalar with an old Perl. The remedy is to simply use the OO version; e.g.:
$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). President, ZeeGee Software Inc (http://www.zeegee.com).
Other contributors
The full set of contributors always includes the folks mentioned in CHANGE LOG in IO::Stringy. But just the same, special thanks to the following individuals for their invaluable contributions (if I’ve forgotten or misspelled your name, please email me!):
Andy Glew, for contributing getc()
.
Brandon Browning, for suggesting opened()
.
David Richter, for finding and fixing the bug in PRINTF()
.
Eric L. Brine, for his offset-using read() and write() implementations.
Richard Jones, for his patches to massively improve the performance of
getline()
and add sysread
and syswrite
.
B. K. Oxley (binkley), for stringification and inheritance improvements, and sundry good ideas.
Doug Wilson, for the IO::Handle inheritance and automatic tie-ing.
SEE ALSO
IO::String, which is quite similar but which was designed more-recently and with an IO::Handle-like interface in mind, so you could mix OO- and native-filehandle usage without using tied().
Note: as of version 2.x, these classes all work like their IO::Handle counterparts, so we have comparable functionality to IO::String.