|
Packit |
d18d0a |
package TieEvil;
|
|
Packit |
d18d0a |
# FCGI tied with a scalar ref object, which breaks when you
|
|
Packit |
d18d0a |
# call open on it. Emulate that to test the workaround:
|
|
Packit |
d18d0a |
use Carp ();
|
|
Packit |
d18d0a |
|
|
Packit |
d18d0a |
sub TIEHANDLE
|
|
Packit |
d18d0a |
{
|
|
Packit |
d18d0a |
my $class = shift;
|
|
Packit |
d18d0a |
my $fh = \(my $scalar); # this is evil and broken
|
|
Packit |
d18d0a |
return bless $fh,$class;
|
|
Packit |
d18d0a |
}
|
|
Packit |
d18d0a |
|
|
Packit |
d18d0a |
sub EOF { 0 }
|
|
Packit |
d18d0a |
sub TELL { length ${$_[0]} }
|
|
Packit |
d18d0a |
sub FILENO { -1 }
|
|
Packit |
d18d0a |
sub SEEK { 1 }
|
|
Packit |
d18d0a |
sub CLOSE { 1 }
|
|
Packit |
d18d0a |
sub BINMODE { 1 }
|
|
Packit |
d18d0a |
|
|
Packit |
d18d0a |
sub OPEN { Carp::confess "unimplemented" }
|
|
Packit |
d18d0a |
|
|
Packit |
d18d0a |
sub READ { $_[1] = substr(${$_[0]},$_[3],$_[2]) }
|
|
Packit |
d18d0a |
sub READLINE { "hello world\n" }
|
|
Packit |
d18d0a |
sub GETC { substr(${$_[0]},0,1) }
|
|
Packit |
d18d0a |
|
|
Packit |
d18d0a |
sub PRINT {
|
|
Packit |
d18d0a |
my ($self, @what) = @_;
|
|
Packit |
d18d0a |
my $new = join($\, @what);
|
|
Packit |
d18d0a |
$$self .= $new;
|
|
Packit |
d18d0a |
return length $new;
|
|
Packit |
d18d0a |
}
|
|
Packit |
d18d0a |
|
|
Packit |
d18d0a |
sub UNTIE { 1 }; # suppress warnings about references
|
|
Packit |
d18d0a |
|
|
Packit |
d18d0a |
1;
|