var2html.cgi
use strict;
sub print_array(\@) {
print "<ol>\n";
print "<li>$_</li>\n" for (@{ $_[0] });
print "</ol>\n";
}
sub print_hash(\%) {
my $h = shift;
print "<dl>\n";
print "<dt>$_</dt><dd>$h->{$_}</dd>\n" for (keys %$h);
print "</dl>\n";
}
sub print_var {
while (my $v = shift) {
my $type = ref($v);
if ($type eq '') { print "<p>$v</p>\n"; }
elsif ($type eq 'SCALAR') { print "<p>$$v</p>\n"; }
elsif ($type eq 'ARRAY') { print_array(@$v); }
elsif ($type eq 'HASH') { print_hash(%$v); }
elsif ($type eq 'REF') { print_var($$v); }
else { print "<p>$type</p>\n"; }
}
}
{
print "Content-Type: text/html\n\n";
print <<HEADER;
<html>
<head><title>Printing Variables</title></head>
<body>
HEADER
my $sc = "Hello, my name is Palmo!";
my $ar = ["First", "Second", "Third"];
my $ha = {Apple => "Red", Banana => "Yellow", Peach => "Pink"};
print_var($sc, $ar, $ha);
print <<FOOTER;
</body>
</html>
FOOTER
}
var2html.cgi を開く