in reply to How to Print Return Data from Subroutine

Like toolic's (except that he beat me to most of it) but I figured your $string was not intended to be a no-op:

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %wtf; my $string = "test me"; my %hash = parse($string); print "Dumping from main:\n"; print Dumper %wtf; print "------\n\n"; print "dumping hash\n"; print Dumper %hash; print "__________\n\n"; print "\n printing hash:\n"; print Dumper(%hash); print ref %hash, "\n"; sub parse { my @a = split (/ /,"test me"); my %b = ( "one" => "1", "two" => "2", "three" => "3", ); my $c = "c"; %wtf = ( aaa => \@a, bbbb => \%b, ccccc => $c, ); return %wtf; }

Output:

perl 706464.pl Dumping from main: $VAR1 = 'ccccc'; $VAR2 = 'c'; $VAR3 = 'bbbb'; $VAR4 = { 'three' => '3', 'one' => '1', 'two' => '2' }; $VAR5 = 'aaa'; $VAR6 = [ 'test', 'me' ]; ------ dumping hash $VAR1 = 'ccccc'; $VAR2 = 'c'; $VAR3 = 'bbbb'; $VAR4 = { 'three' => '3', 'one' => '1', 'two' => '2' }; $VAR5 = 'aaa'; $VAR6 = [ 'test', 'me' ]; __________ printing hash: $VAR1 = 'ccccc'; $VAR2 = 'c'; $VAR3 = 'bbbb'; $VAR4 = { 'three' => '3', 'one' => '1', 'two' => '2' }; $VAR5 = 'aaa'; $VAR6 = [ 'test', 'me' ];

Replies are listed 'Best First'.
Re^2: How to Print Return Data from Subroutine
by Anonymous Monk on Aug 24, 2008 at 02:54 UTC
    Thank you all for giving quick replies. I noticed all of you are using data dumper to print the output. But I wonder if there is another way to print the output eg. using foreach for the hashes and array as I want to further manipulate the content of the array / hashes.
      I wonder if there is another way to print the output

      Another way to extract the key/value pairs from a hashref:
      use strict; use warnings; my %h = (foo => 1, bar => 2, foobar => 3); my $hashref = \%h; print $hashref, "\n"; # prints HASH(0x.......); for (keys(%$hashref)) { print "$_ => $hashref->{$_}\n"; }
      Cheers,
      Rob
        Thanks, Rob. This method works fine because they are all scalar (foo, bar, and foobar). But what if bar is an array and foobar is a hash... How would you print them just as what you did in your example?

        Also, what do you call this topic? Dereferencing the hash / array reference?