xref: /openbsd-src/gnu/usr.bin/perl/lib/Tie/StdHandle.pm (revision a28daedfc357b214be5c701aa8ba8adb29a7f1c2)
1package Tie::StdHandle;
2
3use Tie::Handle;
4our @ISA = 'Tie::Handle';
5use Carp;
6
7sub 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
16sub EOF     { eof($_[0]) }
17sub TELL    { tell($_[0]) }
18sub FILENO  { fileno($_[0]) }
19sub SEEK    { seek($_[0],$_[1],$_[2]) }
20sub CLOSE   { close($_[0]) }
21sub BINMODE { binmode($_[0]) }
22
23sub OPEN
24{
25 $_[0]->CLOSE if defined($_[0]->FILENO);
26 @_ == 2 ? open($_[0], $_[1]) : open($_[0], $_[1], $_[2]);
27}
28
29sub READ     { read($_[0],$_[1],$_[2]) }
30sub READLINE { my $fh = $_[0]; <$fh> }
31sub GETC     { getc($_[0]) }
32
33sub WRITE
34{
35 my $fh = $_[0];
36 print $fh substr($_[1],0,$_[2])
37}
38
39
401;
41