var2html.cgi

#!/usr/local/bin/perl

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 を開く