The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# These are suspended for now...

# use blib; # For Types.pm
# require './PP.pm';

open PP, "PP.pm" or die "can't open PP.pm";
$str = join '',<PP>;
$str =~ m|\@PDL::PP::EXPORT\s*=\s*qw/([^/]*)/|s;
$str = $1; # Get the contents of the qw//


$pm = '
=head1 NAME

PDL::PP::Dump -- dump pp_xxx calls to stdout

=head1 SYNOPSIS

   perl -MPDL::PP::Dump Basic/Ops/ops.pd

=head1 DESCRIPTION

The most basic PP script debugger thinkable.

=head1 AUTHOR

Christian Soeller <c.soeller@auckland.ac.nz> .

=cut

package PDL::PP::Dump;

use Exporter;
@ISA = Exporter;

@EXPORT = qw('.$str.q|);

for (@EXPORT) {
  if ($_ !~ /pp_def/) {
    my $def = "sub $_ { print '".$_.q/('.(join ',',map("'$_'",@_)).");\n" }/;
#    print "defining =>\n$def\n";
    eval($def);
  }
}

sub pp_def {
   my($name,%hash) = @_;

   print "pp_def('$name',\n";
     foreach (keys(%hash)) {
       if ($_ =~ /(Generic)*Types/) {
        print "$_ => [" . join(',',@{$hash{$_}}) . "]\n";
       } else {
        print "$_ =>\n'".$hash{$_}."',\n";
       }
     }
  print ");\n";
}

1;
|;

print $pm;