Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: Unable to print the contents of an array reference passed from the main pgm to the flat file

by Anonymous Monk
on Aug 23, 2010 at 14:36 UTC ( #856718=note: print w/ replies, xml ) Need Help??


in reply to Re: Unable to print the contents of an array reference passed from the main pgm to the flat file
in thread Unable to print the contents of an array reference passed from the main pgm to the flat file

The above function being called via the following

&pkoutFile($OUTFP, ';:=~',"301","WPSPD", $valDate1, "SPREAD", \@retArr +ay);

where \@retArray is the array reference which contains the result set. We are able to access the contents of the result set in the above function, but unable to copy the contents to the hash variable @ff. Code snippet for this is given below. $rowsHdl is the array reference

# determine the field names if ($colNamesHdl) { @ff=(); for ($i=0; $i <= $#$colNamesHdl; $i++) { push(@ff, $$colNamesHdl[$i]); } } else { $k = $$rowsHdl[0]; @ff = keys(%$k); } $j = $#$rowsHdl; for ($i=0; $i <= $j; $i++) { @paramVals = (); foreach $k (@ff) { $k1= $k; $k1 =~ s/(^[\n\r\s\t]+)|([\n\r\s\t]+$)//g; $val = $$rowsHdl[$i]->{$k}; push(@paramVals, $k . $delim2 . $val); }


Comment on Re^2: Unable to print the contents of an array reference passed from the main pgm to the flat file
Select or Download Code
Re^3: Unable to print the contents of an array reference passed from the main pgm to the flat file
by Marshall (Prior) on Aug 24, 2010 at 06:07 UTC
    I would suggest adding some print Dumper statements in to make sure that you have the kind of thing that you think that you have...

    Running some simple test should provide some light on what data this pkoutFile sub is really getting. I simplified your statement to input the sub's input args - avoid using indicies unless you have to - Perl is designed so they aren't needed nearly as often as in other languages.

    #!/usr/bin/perl -w use warnings; use Data::Dumper; pkoutFile($OUTFP, ';:=~',"301","WPSPD", $valDate1, "SPREAD", \@retArray); sub pkoutFile { my( $outFH, $delims, $branchID, $sourceSystem, $valDateY4MD, $rateType, $rowsHdl, $colNamesHdl)= @_; print Dumper \$rowsHdl; #$colNamesHdl is undefined in this case #so, it appears that this following code is executed $k = $$rowsHdl[0]; # $rowsHdl->[0] print Dumper \$k; @ff = keys(%$k); print Dumper \@ff; }
    update: I noticed that for example the k1 value has a calculation done on it, but is never printed. With further looking, if the intent of the regex you want is to remove leading and trailing spaces, I would suggest this:
    foreach ($delims, $branchID, $valDateY4MD, $sourceSystem, $rateType) { s/^\s+//; #remove leading spaces s/\s+$//; #remove trailing spaces }
    This sets $_ to each of the scalar variables in turn and then runs 2 simple and fast regex'es that do not require the /g switch. In this case $_ is an alias for the variable (like $delims) and changes in the loop are reflected in changes to the actual variable.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://856718]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (6)
As of 2014-12-27 08:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls