Apache-HeavyCGI

 view release on metacpan or  search on metacpan

lib/Apache/HeavyCGI/Debug.pm  view on Meta::CPAN

package Apache::HeavyCGI::Debug;
use base 'Class::Singleton';
use Data::Dumper;
use strict;

sub as_string {
  my Apache::HeavyCGI::Debug $self = shift;
  my Apache::HeavyCGI $mgr = shift;

  # An AVHV is ugly to look at, so we convert to an HASH

  my(%f,$k,$v);

  while (($k,$v) = each %$mgr){
   next unless defined $v;
   $f{$k} = $v;
  }
  Data::Dumper::Dumper( \%f )
}

1;

=head1 NAME

Apache::HeavyCGI::Debug - inspect the Pseudohash as Hash with Data::Dumper

=head1 SYNOPSIS

 push @layout, "<BR><PRE>",
               $self->instance_of("Apache::HeavyCGI::Debug"),
               "</PRE><BR>\n";

=head1 DESCRIPTION

Can be used to inspect the application object within an output page.

lib/Apache/HeavyCGI/ExePlan.pm  view on Meta::CPAN

  $self->{DEBUG} = $debug;
  $self->{FUNCTIONAL} = $functional;
  $self->{WATCHVARIABLE} = $watchvariable;
  $self;
}

sub walk {
  my Apache::HeavyCGI::ExePlan $self = shift;
  my Apache::HeavyCGI $application = shift;
  if ($self->{WATCHVARIABLE}) {
    require Data::Dumper;
  }
  for (my $i=0;;$i+=2) {
    warn sprintf(
                 "entering method[%s] walktype[%s]",
                 $self->{PLAN}[$i]."::".$self->{PLAN}[$i+1],
                 $self->{FUNCTIONAL} ? "f" : "m",
                ) if $self->{DEBUG} && $self->{DEBUG} & 1;
    my $before = $self->{WATCHVARIABLE} ?
        Data::Dumper::Dumper($application->{$self->{WATCHVARIABLE}}) :
              "";
    if ($self->{FUNCTIONAL}) {
      my $subr = $self->{PLAN}[$i] or last;
      my $obj = $self->{PLAN}[$i+1];
      $subr->($obj,$application);
    } else {
      my $obj = $self->{PLAN}[$i] or last;
      my $method = $self->{PLAN}[$i+1];
      $obj->$method($application);
    }
    warn sprintf "exiting" if $self->{DEBUG} && $self->{DEBUG} & 2;
    my $after = $self->{WATCHVARIABLE} ?
        Data::Dumper::Dumper($application->{$self->{WATCHVARIABLE}}) : "";
    unless ($before eq $after) {
      warn sprintf(
                   "variable %s changed value from[%s]to[%s] in method[%s]",
                   $self->{WATCHVARIABLE},
                   $before,
                   $after,
                   $self->{PLAN}[$i]."::".$self->{PLAN}[$i+1],
                  );
    }
  }



( run in 0.250 second using v1.01-cache-2.11-cpan-4d50c553e7e )