How does Perl variable scope work in while loop under strict mode? -


i'm new perl , i'm confused how variable scope works. i'm trying create array of hashes result of mysql query.

the following code works, intended, without use strict

  %hash = ();    while (my %hash = %{$qhand->fetchrow_hashref()} ) {     push(@results, {%hash});   } 

but when strict enabled produces following error:

can't use undefined value hash reference @ [filename] line xx (the line of while statement).

could tell me i'm doing wrong , corresponding rule in strict i'm flaunting?

you're violating refs portion of strict. when try use non-reference value reference, perl wants create "symbolic reference", not want although silently continues program (probably not "working", continuing). enabling strictures, catch cases.

in example , jonathan's answer, looks doing lot of acrobatics undo hash references make them hash references again. there reason don't leave hash reference?

while( $href = $qhand->fetchrow_hashref ) {   push @results, $href;   } 

and, if want results hash references, there's dbi method can skip while loop:

my $results_array_ref = $qhand->fetchall_arrayref( {} ); 

Comments

Popular posts from this blog

ASP.NET/SQL find the element ID and update database -

jquery - appear modal windows bottom -

c++ - Compiling static TagLib 1.6.3 libraries for Windows -