This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Math::BigRat 0.22
[perl5.git] / lib / Tie / StdHandle.pm
1 package Tie::StdHandle; 
2
3 use Tie::Handle;
4 our @ISA = 'Tie::Handle';
5 use Carp;
6
7 sub TIEHANDLE 
8 {
9  my $class = shift;
10  my $fh    = \do { local *HANDLE};
11  bless $fh,$class;
12  $fh->OPEN(@_) if (@_);
13  return $fh;
14 }
15
16 sub EOF     { eof($_[0]) }
17 sub TELL    { tell($_[0]) }
18 sub FILENO  { fileno($_[0]) }
19 sub SEEK    { seek($_[0],$_[1],$_[2]) }
20 sub CLOSE   { close($_[0]) }
21 sub BINMODE { binmode($_[0]) }
22
23 sub OPEN
24 {
25  $_[0]->CLOSE if defined($_[0]->FILENO);
26  @_ == 2 ? open($_[0], $_[1]) : open($_[0], $_[1], $_[2]);
27 }
28
29 sub READ     { read($_[0],$_[1],$_[2]) }
30 sub READLINE { my $fh = $_[0]; <$fh> }
31 sub GETC     { getc($_[0]) }
32
33 sub WRITE
34 {
35  my $fh = $_[0];
36  print $fh substr($_[1],0,$_[2])
37 }
38
39
40 1;