2009/7/16 John W. Krahn <jwkr...@shaw.ca>: > Nick Brown wrote: >> >> On Jul 15, 11:15 am, jwkr...@shaw.ca (John W. Krahn) wrote: >>> >>> Nick Brown wrote: >>>> >>>> I'm trying to use Finance::OFX::Response to use a ofx statement I've >>>> it downloaded from by bank website. >>>> http://search.cpan.org/~bfoz/p5-Finance-OFX-20080303/lib/Finance/OFX/... >>>> However there I'm getting the following perl compilation error: >>>> Type of arg 1 to each must be hash (not subroutine entry) at >>>> download_statements.pl line 67, near "->ofx ) " >>>> for the below code: >>>> $response = $mech->get($download_url . $count); >>>> if (!$response->is_success) { >>>> die 'Failed to load statements URL'; >>>> } >>>> $response = $mech->submit_form(form_name => $download_form_name, >>>> button => \ >>>> 'btnDownload'); >>>> if (!$response->is_success) { >>>> die 'Failed to get Statement Download'; >>>> } >>>> #print $mech->content(); >>>> my $ofx_response = >>>> Finance::OFX::Response->from_http_response($response); >>>> while( my ($k, $v) = each $ofx_response->ofx ) { >>>> print "key: $k, value: $v.\n"; >>>> } >>>> Can you suggest what is wrong the while loop I'm trying to use to >>>> print the hash tree of the OFX? >>> >>> values(), keys() and each() require that their first argument must be a >>> hash so if $ofx_response->ofx returns a reference to a hash then you >>> have to dereference it: >>> >>> while( my ($k, $v) = each %{ $ofx_response->ofx } ) { >>> print "key: $k, value: $v.\n"; >>> } >> >> Thanks, I've added the deference to the hash and it now compiles and >> executes. >> However I'm now getting a different run time error: >> >> Odd number of elements in hash assignment at >> /usr/lib/perl5/vendor_perl/5.10.0/Finance/OFX/Parse.pm line 105, <> >> line 1. >> Use of uninitialized value $header{"OFXHEADER"} in numeric eq (==) at >> /usr/lib/perl5/vendor_perl/5.10.0/Finance/OFX/Parse.pm line 107, <> >> line 1. >> Can't use an undefined value as a HASH reference at >> download_statements.pl line 67, <> line 1. >> >> Do you have any suggestions to the cause of the this error? What >> causing the undefine value as a HASH reference? > > Your best bet is to find out exactly what $ofx_response->ofx is returning. > Try something like: > > use Data::Dumper; > > print Dumper $ofx_response->ofx;
looks like its returning nothing! Odd number of elements in hash assignment at /usr/lib/perl5/vendor_perl/5.10.0/Finance/OFX/Parse.pm line 105, <> line 1. Use of uninitialized value $header{"OFXHEADER"} in numeric eq (==) at /usr/lib/perl5/vendor_perl/5.10.0/Finance/OFX/Parse.pm line 107, <> line 1. $VAR1 = undef; Which is strange as http://search.cpan.org/~bfoz/p5-Finance-OFX-20080303/lib/Finance/OFX/Parse.pm suggest that ofx_response->ofx should be a reference to a hash tree. So it looks like Finance::OFX::Response->from_http_response($response); must be failing to parse and displaying the above error. Certainly $response->contents contains a OFX file that I grabbed as I can print it just fine. Hmmm... so I think I'm stuck. Thanks, Nick -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/