CAM-PDF
view release on metacpan or search on metacpan
lib/CAM/PDF.pm view on Meta::CPAN
C<changeRefKeys()> for an example.
=cut
sub traverse
{
my $self = shift;
my $deref = shift;
my $startnode = shift;
my $func = shift;
my $funcdata = shift;
my $traversed = shift || {};
my @stack = ($startnode);
my $i = 0;
while ($i < @stack)
{
my $objnode = $stack[$i++];
$self->$func($objnode, $funcdata);
my $type = $objnode->{type};
my $val = $objnode->{value};
if ($type eq 'object')
{
# Shrink stack periodically
splice @stack, 0, $i;
$i = 0;
# Mark object done
( run in 0.600 second using v1.01-cache-2.11-cpan-454fe037f31 )