NAME HTTP::MessageParser - Parse HTTP Messages SYNOPSIS use HTTP::MessageParser; my ( $message, @request ); while ( my $line = $client->getline ) { next if !$message && $line eq "\x0D\x0A"; # RFC 2616 4.1 $message .= $line; last if $message =~ /\x0D\x0A\x0D\x0A$/; } eval { @request = HTTP::MessageParser->parse_request($message); }; if ( $@ ) { # 400 Bad Request } # ... DESCRIPTION Parse HTTP/1.0 and HTTP/1.1 Messages. METHODS parse_headers( $string ) my @headers = HTTP::MessageParser->parse_headers($string); my $headers = HTTP::MessageParser->parse_headers($string); Parses "Message Headers". "field-name"'s are lowercased. Leading and trailing "LWS" is removed. "LWS" occurring between "field-content" are replaced with a single "SP". Takes one argument, a string or a reference to a string, if it's a reference it will be consumed. parse_request( $string ) my ( $Method, $Request_URI, $HTTP_Version, $Headers, $Body ) = HTTP::MessageParser->parse_request($string); Parses a Request. Expects a "Request-Line" followed by zero more header fields and an empty line. Content occurring after end of header fields is returned as a string reference, $Body. Takes one argument, a string or a reference to a string, if it's a reference it will be consumed. Throws an exception upon failure. parse_request_line( $string ) my ( $Method, $Request_URI, $HTTP_Version ) = HTTP::MessageParser->parse_request_line($string); Parses a "Request-Line". Any leading "CRLF" is ignored. Takes one argument, a string or a reference to a string, if it's a reference it will be consumed. Throws an exception upon failure. parse_response( $string ) my ( $HTTP_Version, $Status_Code, $Reason_Phrase, $Headers, $Body ) = HTTP::MessageParser->parse_response($string); Parses a Response. Expects a "Status-Line" followed by zero more header fields and an empty line. Content occurring after end of header fields is returned as a string reference, $Body. Takes one argument, a string or a reference to a string, if it's a reference it will be consumed. Throws an exception upon failure. parse_response_line( $string ) my ( $HTTP_Version, $Status_Code, $Reason_Phrase ) = HTTP::MessageParser->parse_response_line($string); Parses a "Status-Line". Takes one argument, a string or a reference to a string, if it's a reference it will be consumed. Throws an exception upon failure. parse_version( $string ) my ( $major, $minor ) = HTTP::MessageParser->parse_version($string); my $version = HTTP::MessageParser->parse_version($string); Parses a "HTTP-Version" string. In scalar context it returns a version number ( "major * 1000 + minor" ). In list context it returns "major" and "minor" as two separate integers. Throws an exception upon failure. EXPORTS Nothing by default. Following subroutines can be exported: parse_headers parse_request parse_request_line parse_response parse_response_line parse_version SEE ALSO <http://www.w3.org/Protocols/rfc2616/rfc2616.html> HTTP::Request HTTP::Response HTTP::Message HTTP::Parser AUTHOR Christian Hansen "chansen@cpan.org" COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.