sub read_post_data_chunked(;$$) { my $content_length = shift || $ENV{CONTENT_LENGTH}; my $chunk_size = shift || $DEFAULT_CHUNK_SIZE; my $raw_data; while($content_length > 0) { warn read(STDIN, my $chunk, $chunk_size < $content_length ? $chunk_size : $content_length) . " chars read.\n"; $raw_data .= $chunk; $content_length -= $chunk_size; } return $raw_data; }