Acme-Throw
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
t/lib/IO/String.pm view on Meta::CPAN
package IO::String;
# Copyright 1998-2005 Gisle Aas.
#
# This library is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
require 5.005_03;
use strict;
use vars qw($VERSION $DEBUG $IO_CONSTANTS);
$VERSION = "1.08"; # $Date: 2005/12/05 12:00:47 $
use Symbol ();
sub new
{
my $class = shift;
my $self = bless Symbol::gensym(), ref($class) || $class;
tie *$self, $self;
$self->open(@_);
return $self;
}
sub open
{
my $self = shift;
return $self->new(@_) unless ref($self);
if (@_) {
my $bufref = ref($_[0]) ? $_[0] : \$_[0];
$$bufref = "" unless defined $$bufref;
*$self->{buf} = $bufref;
}
else {
my $buf = "";
*$self->{buf} = \$buf;
}
*$self->{pos} = 0;
*$self->{lno} = 0;
return $self;
}
sub pad
{
my $self = shift;
my $old = *$self->{pad};
*$self->{pad} = substr($_[0], 0, 1) if @_;
return "\0" unless defined($old) && length($old);
return $old;
}
sub dump
{
require Data::Dumper;
my $self = shift;
print Data::Dumper->Dump([$self], ['*self']);
print Data::Dumper->Dump([*$self{HASH}], ['$self{HASH}']);
return;
}
sub TIEHANDLE
{
print "TIEHANDLE @_\n" if $DEBUG;
return $_[0] if ref($_[0]);
my $class = shift;
my $self = bless Symbol::gensym(), $class;
$self->open(@_);
return $self;
}
sub DESTROY
{
print "DESTROY @_\n" if $DEBUG;
}
sub close
{
my $self = shift;
delete *$self->{buf};
delete *$self->{pos};
delete *$self->{lno};
undef *$self if $] eq "5.008"; # workaround for some bug
return 1;
}
sub opened
{
my $self = shift;
return defined *$self->{buf};
}
sub binmode
{
my $self = shift;
return 1 unless @_;
# XXX don't know much about layers yet :-(
return 0;
}
sub getc
{
my $self = shift;
my $buf;
return $buf if $self->read($buf, 1);
return undef;
}
sub ungetc
{
my $self = shift;
$self->setpos($self->getpos() - 1);
return 1;
}
sub eof
{
my $self = shift;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.542 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )