App-rs

 view release on metacpan or  search on metacpan

rs.pm  view on Meta::CPAN

				$h->{l} = "";
			} else {
				$h->{l} .= substr($b, $i), $i = length($b);
			}
		} else {
			if ($h->{rl} ne "eof" and $h->{rl} <= length($b) - $i) {
				$h->{c} .= substr($b, $i, $h->{rl}), $i += $h->{rl};
				if ($h->{st} eq "reading-chunk-data")	{ $h->{rl} = "line", $h->{st} = "reading-crlf" }
				else					{ return $i }
			} else {
				$h->{c} .= substr($b, $i), $h->{rl} -= length($b) - $i, $i = length($b);
			}
		}
	}
	undef;
}
sub http_unparse {
	my $h = shift;
	my $b;
	my $v = "HTTP/$h->{major}.$h->{minor}";
	if ($h->{type} eq "request")	{ $b = join " ", $h->{method}, $h->{"request-uri"}, $v }
	else				{ $b = join " ", $v, $h->{"status-code"}, $h->{"reason-phrase"} }
	$b .= "\r\n";
	$h->{hv}{"content-length"} = length($h->{c}) if exists $h->{hv}{"content-length"};
	my $i = {};
	for (@{$h->{hf}}) {
		$b .= "$_: ";
		my $k = lc $_;
		if (ref $h->{hv}{$k} eq "ARRAY")	{ $b .= $h->{hv}{$k}[$i->{$k}++] }
		else					{ $b .= $h->{hv}{$k} }
		$b .= "\r\n";
	}
	$b .= "\r\n";
	if (exists $h->{c}) {
		if (exists $h->{hv}{"transfer-encoding"} and $h->{hv}{"transfer-encoding"} !~ /^identity$/i) {
			$b .= sprintf("%x\r\n", length($h->{c})) . $h->{c} . "\r\n0\r\n\r\n";
		} else {
			$b .= $h->{c};
		}
	}
	$b;
}
sub vcmp ($$) {
	my ($a, $b) = @_;
	version->parse($a) <=> version->parse($b);
}
sub vsat {
	my ($pkg, $ver) = @_;
	return vcmp($^V, $ver) >= 0 if $pkg eq 'perl';
	if (my $pid = fork) {
		die unless $pid == waitpid $pid, 0;
		not $?;
	} else {
		exit not eval {
			require $pkg =~ s|::|/|gr . '.pm';
			$pkg->VERSION($ver);
		};
	}
}
sub rf {
	local (@ARGV, $/) = @_;
	<>;
}
1;

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.636 second using v1.00-cache-2.02-grep-82fe00e-cpan-f5108d614456 )