SPUG: odd array ref issue

John Subaykan john.spug at subaykan.com
Thu Jan 26 10:49:15 PST 2006

Looks like cgi does return a hash that stringifies its values:

use strict;
use warnings;
use Data::Dumper;
use CGI;
my $q = new CGI; 
my $params = $q->Vars;
my $tmp = [ '102', '104' ];
$params->{all} = 1;
$params->{view} = "something";
$params->{donor_pk} = $tmp;
print Dumper $params;
You get:
$VAR1 = {
          'all' => '1',
          'view' => 'something',
          'donor_pk' => 'ARRAY(0x81a850c)'

some relevant detail at: http://search.cpan.org/dist/CGI.pm/CGI.pm  scroll down to "Fetching the parameter list as a hash"
- John Subaykan
----- Original Message ----- 
From: mike 
To: John Subaykan 
Sent: Thursday, January 26, 2006 10:30 AM
Subject: Re: odd array ref issue

Hm. Does data dumper indicate if a hash is tied to a class? 

anyway, I create a new hash and it is not stringified in the data dump. 
I created $params from Vars in cgi.pm (does vars return a tied hash?). i was trying to frob some more data into the POST before processing it.. 

I can do this another way but this ghetto style approach is usually worth a shot

On 1/26/06, John Subaykan wrote: 
Is your $params hashref tied to a class that stringifies values at assignment with its STORE method?  How are you creating $params?
----- Original Message ----- 
From: mike 
To: members at seattleperl.org 
Sent: Thursday, January 26, 2006 10:14 AM
Subject: SPUG: odd array ref issue

I've totally been pulling my hair out over this and I'm probably missing something stupid here but I figured the SPUG eyes would notice it immediately

I have an array ref in $tmp, here is the Data::Dumpage

Thu Jan 26 10:00:40 2006 tmp: $VAR1 = [

then I put that into my $params hashref

    $params->{donor_pk} = $tmp;

then I Data::Dump the $params hashref 

Thu Jan 26 10:00:40 2006 params: $VAR1 = {
          'all' => '1',
          'Submit' => '1',
          'view' => 'donors',
          'donor_pk' => 'ARRAY(0x60234)'

notice the dumper does not traverse into that array, which it usually does with other hashrefs and objects i've created. 
the ref() function also does not return ARRAY anymore after I stick it into that hash. furthermore, that hash goes into another hash which is obviously not going to do much for me either. 

this is something i do rather frequently but do not think i've seen this issue before. 

More information about the spug-list mailing list