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;



John
--
Those people who think they know everything are a great
annoyance to those of us who do.        -- Isaac Asimov

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to