X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FTie%2FHandle.pm;h=d8747f12af1db43d8e2f6e98fd118ae9c0604c94;hb=46471bde41ad0777edf7b89818df6730e8b55c20;hp=f64e4b2a5bc9c573307385e3f71168247bedfabc;hpb=cb50131aab68ac6dda048612c6e853b8cb08701e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/Tie/Handle.pm b/lib/Tie/Handle.pm index f64e4b2..d8747f1 100644 --- a/lib/Tie/Handle.pm +++ b/lib/Tie/Handle.pm @@ -1,7 +1,7 @@ package Tie::Handle; -use 5.005_64; -our $VERSION = '1.0'; +use 5.006_001; +our $VERSION = '4.1'; =head1 NAME @@ -11,15 +11,15 @@ Tie::Handle, Tie::StdHandle - base class definitions for tied handles package NewHandle; require Tie::Handle; - - @ISA = (Tie::Handle); - + + @ISA = qw(Tie::Handle); + sub READ { ... } # Provide a needed method sub TIEHANDLE { ... } # Overrides inherited method - - + + package main; - + tie *FH, 'NewHandle'; =head1 DESCRIPTION @@ -33,7 +33,7 @@ For developers wishing to write their own tied-handle classes, the methods are summarized below. The L section not only documents these, but has sample code as well: -=over +=over 4 =item TIEHANDLE classname, LIST @@ -105,9 +105,19 @@ destruction of an instance. The L section contains an example of tying handles. +=head1 COMPATIBILITY + +This version of Tie::Handle is neither related to nor compatible with +the Tie::Handle (3.0) module available on CPAN. It was due to an +accident that two modules with the same name appeared. The namespace +clash has been cleared in favor of this module that comes with the +perl core in September 2000 and accordingly the version number has +been bumped up to 4.0. + =cut use Carp; +use warnings::register; sub new { my $pkg = shift; @@ -119,8 +129,7 @@ sub new { sub TIEHANDLE { my $pkg = shift; if (defined &{"{$pkg}::new"}) { - carp "WARNING: calling ${pkg}->new since ${pkg}->TIEHANDLE is missing" - if $^W; + warnings::warnif("WARNING: calling ${pkg}->new since ${pkg}->TIEHANDLE is missing"); $pkg->new(@_); } else { @@ -183,20 +192,20 @@ sub WRITE { sub CLOSE { my $pkg = ref $_[0]; croak "$pkg doesn't define a CLOSE method"; -} +} package Tie::StdHandle; -our @ISA = 'Tie::Handle'; +our @ISA = 'Tie::Handle'; use Carp; sub TIEHANDLE { my $class = shift; - my $fh = do { \local *HANDLE}; + my $fh = \do { local *HANDLE}; bless $fh,$class; $fh->OPEN(@_) if (@_); return $fh; -} +} sub EOF { eof($_[0]) } sub TELL { tell($_[0]) } @@ -206,9 +215,9 @@ sub CLOSE { close($_[0]) } sub BINMODE { binmode($_[0]) } sub OPEN -{ +{ $_[0]->CLOSE if defined($_[0]->FILENO); - open($_[0],$_[1]); + @_ == 2 ? open($_[0], $_[1]) : open($_[0], $_[1], $_[2]); } sub READ { read($_[0],$_[1],$_[2]) } @@ -216,7 +225,7 @@ sub READLINE { my $fh = $_[0]; <$fh> } sub GETC { getc($_[0]) } sub WRITE -{ +{ my $fh = $_[0]; print $fh substr($_[1],0,$_[2]) }