Compiler-Parser

 view release on metacpan or  search on metacpan

t/app/Plack/HTTPParser/PP.t  view on Meta::CPAN


    my ($method,$uri,$http) = split / /,$request;
    return -1 unless $http and $http =~ /^HTTP\/(\d+)\.(\d+)$/i;
    ($major, $minor) = ($1, $2);

    $env->{REQUEST_METHOD}  = $method;
    $env->{SERVER_PROTOCOL} = "HTTP/$major.$minor";
    $env->{REQUEST_URI}     = $uri;

    my($path, $query) = ( $uri =~ /^([^?]*)(?:\?(.*))?$/s );
    for ($path, $query) { s/\#.*$// if defined && length } # dumb clients sending URI fragments

    $env->{PATH_INFO}    = URI::Escape::uri_unescape($path);
    $env->{QUERY_STRING} = $query || '';
    $env->{SCRIPT_NAME}  = '';

    # import headers
    my $token = qr/[^][\x00-\x1f\x7f()<>@,;:\\"\/?={} \t]+/;
    my $k;
    for my $header (@out) {
        if ( $header =~ s/^($token): ?// ) {



( run in 0.657 second using v1.01-cache-2.11-cpan-364913b4093 )