Does Perl have something similar to
print_r? The question has been asked before by people at all levels of expertise with Perl and PHP. The answer has often been
Data::Dumper, but that is both more powerful and more complex than needed. This code will produce basically the same results as the popular PHP print_r without any settings or objects to worry about...
use strict;
use warnings;
my @array1 = qw( four five six );
my @array = qw( one two three );
push( @array, \@array1 );
my $string = "four";
my %hash = (
'first' => 'one',
'second' => 'two',
'third' => 'three',
'fourth' => \@array,
);
#print_r( @array );
print_r( \%hash );
sub print_r {
package print_r;
our $level;
our @level_index;
if ( ! defined $level ) { $level = 0 };
if ( ! defined @level_index ) { $level_index[$level] = 0 };
for ( @_ ) {
my $element = $_;
my $index = $level_index[$level];
print "\t" x $level . "[$index] => ";
if ( ref($element) eq 'ARRAY' ) {
my $array = $_;
$level_index[++$level] = 0;
print "(Array)\n";
for ( @$array ) {
main::print_r( $_ );
}
--$level if ( $level > 0 );
} elsif ( ref($element) eq 'HASH' ) {
my $hash = $_;
print "(Hash)\n";
++$level;
for ( keys %$hash ) {
$level_index[$level] = $_;
main::print_r( $$hash{$_} );
}
} else {
print "$element\n";
}
$level_index[$level]++;
}
} # End print_r
In reply to print_r
by GhodMode