# Test::Builder::IO::Scalar - phpMan

## 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].

