The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<html>

<head>
<title>plpinfo()</title>
<style>
	body {background:#FFF; color:#000; font-family:sans-serif}
	table, h1 {width:45em; margin:1ex auto}
	table, h1 {border:1px solid #000; border-collapse:collapse}
	tr {background:#CCC; color:#000}
	th, td {text-align:left; vertical-align:baseline}
	th, td, h1 {padding:0.1ex 0.2em}
	th {background:#CCF; width:33%}
	h1 {font-size:150%; width:30em; background:#99C; color:#000}
	h2 {font-size:125%; text-align:center}
	i {color:#666}
</style>
</head>

<body>
<h1>PLP Version <:= $PLP::VERSION :></h1>

<table border="1">
<:
use Config;
printf "<tr><th>%s</th><td>%s</td></tr>\n", @$_ for (
	["System"     => qx(uname -snrvm)],
	["Server API" => $PLP::interface ? $PLP::interface : "?"],
	["Perl"       => sprintf '%vd', $^V],
	["Perl API"   => $Config{api_versionstring} || "?"],
	["Build Date" => $Config{cf_time} || "?"],
	["Debug Build" => $^P ? "yes ($^P)" : "no"],
	["Thread Safety" => $Config{usethreads} ? "enabled" : "disabled"],
	["Include Path" => join "; ", @INC],
);
:></table>

<h2>PLP Core</h2>

<table border="1">
<:
my %modules;
s!/!::!g, s/\.pm$// and $modules{$_} = $_->VERSION || "" for keys %INC;
printf "<tr><th>%s</th><td>%s</td></tr>\n", @$_ for (
	["Loaded Modules" => join "<br>\n",
		map "$_ $modules{$_}", sort grep /^PLP/, keys %modules
	],
	["Debug Output" => join("; ",
		$PLP::DEBUG & 1 ? "run-time errors" : (),
		$PLP::DEBUG & 2 ? "headers" : (),
	) || "disabled"],
	["Caching" => $PLP::use_cache ? "on" : "off"], #TODO
);
:></table>

<h2>Environment</h2>

<table border="1">
<:
s/(?<=,)/<wbr>/g for values %ENV; # allow breaks at commas (HTTP_ACCEPT*)
printf("<tr><th>%s</th><td>%s</td></tr>\n",
	$_, defined $ENV{$_} ? $ENV{$_} : "<i>no value</i>"
) for sort keys %ENV;
:></table>

<h2>PLP Variables</h2>

<table border="1">
<:
for my $var qw(get post cookies header) {
	printf("<tr><th>%s{'%s'}</th><td>%s</td></tr>\n",
		$var, $_, defined $$var{$_} ? $$var{$_} : "<i>no value</i>"
	) for sort keys %$var;
}
:></table>

</body>
</html>