Changeset 23460

Show
Ignore:
Timestamp:
11/13/08 01:37:41 (5 years ago)
Author:
tokuhirom
Message:

よりシンプルに

Location:
lang/perl/MENTA/trunk
Files:
1 removed
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/MENTA/trunk/bin/cgi-server.pl

    r23454 r23460  
    55require HTTP::Server::Simple::CGI; 
    66use POSIX; 
    7 use MENTA::BindSTDOUT; 
    87use HTTP::Response; 
     8 
     9{ 
     10    package MENTA::BindSTDOUT::Tie; 
     11    require Tie::Handle; 
     12    use base qw/Tie::Handle/; 
     13    use Carp; 
     14 
     15    sub TIEHANDLE { 
     16        my ($class, $bufref) = @_; 
     17        bless {buf => $bufref}, $class; 
     18    } 
     19 
     20    sub WRITE { 
     21        my $self = shift; 
     22        ${$self->{buf}} .= shift; 
     23    } 
     24 
     25    sub READ { croak "This handle is readonly" } 
     26    sub CLOSE { } 
     27} 
    928 
    1029{ 
    1130    package MENTA::Server; 
    1231    use base qw/HTTP::Server::Simple::CGI/; 
     32 
     33    sub bind_stdout { 
     34        my ($code, ) = @_; 
     35        tie *STDOUT, 'MENTA::BindSTDOUT::Tie', \my $out; 
     36        $code->(); 
     37        untie *STDOUT; 
     38        $out; 
     39    } 
     40 
    1341    sub handle_request { 
    1442        my $pid = fork(); 
     
    1745        } elsif ($pid == 0) { 
    1846            chdir 'app'; 
    19             my $out = MENTA::BindSTDOUT->bind(sub { 
     47            my $out = bind_stdout(sub { 
    2048                package main; 
    2149                do './menta.cgi';