| FrameMaker-MifTree documentation | Contained in the FrameMaker-MifTree distribution. |
IO::Tokenized::Scalar - Extension of IO::Scalar allowing tokenized input
my $fh = IO::Tokenized::Scalar->new();
$fh->setparser([num => qr/\d+/],
[ident => qr/[a-z_][a-z0-9_]],
[op => qr![+*/-]!,\&opname]);
$fh->open('tokenfile') || die "Can't open 'tokenfile': $1";
while ($t = $fh->gettoken()) {
... do something smart...
}
$fh->close();
This is a modified version of IO::Tokenized::File; it has just every occurrence of IO::File replaced by IO::Scalar. The original package is copyright Leo Cacciari; modification by Roel van der Steen <roel-perl@st2x.net>.
IO::Tokenized::Scalar adds the methods provided by IO::Tokenized to IO::Scalar objects. See IO::Tokenized for details about how the tokens are specified and returned.
IO::Tokenized::Scalar inherits both from IO::tokenized and IO::Scalar, so that methods from both classes are available to IO::Tokenized::Scalar objects.
IO::Tokenized::Scalar redefines the following methods:
new([$filename[,@tokens]])The new method is redefined so as to call both IO::Scalar::new (passing
to $filename if it is defined) and IO::Tokenized::new (passing to it the
@tokens parameter).
open($filename)The open method from IO::Scalar is redefined so that only opening for
input is allowed: requestes for other kind of opening are silently converted to
opening for input (this is a bug).
IO::Tokenized and IO::Scalar.
Leo Cacciari, <hobbit@cpan.org>
Copyright 2003 by Leo Cacciari
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| FrameMaker-MifTree documentation | Contained in the FrameMaker-MifTree distribution. |
package IO::Tokenized::Scalar; use strict; use base qw(IO::Scalar IO::Tokenized); use vars qw($VERSION); use Carp; $VERSION = '0.05'; # new has the following synopsis: # IO::Tokenized::Scalar->new([$tokens [,$filename]]) sub new { my $class = shift; my ($filename,@tokens) = @_; my $self = defined $filename ? IO::Scalar->new($filename): IO::Scalar->new(); $self = IO::Tokenized->new($self,@tokens); bless $self,$class; } # redefine so that only opening for input is allowed sub open { my $self = shift; my ($filename) = @_; #silently ignore other parameters $self->SUPER::open($filename,"r"); } 1; __END__