my %data; my @loop_data = (); ## NOT INCREMENTING PRIMARY KEY, THUS RETURNING THE FIRST ROW *TWICE* for (@info) { $data{author} = $_->author; $data{content} = $_->content; $data{title} = $_->title; $data{id} = $_->id; $data{date} = $_->date; push @loop_data, \%data; }
Your hash, %data, is defined outside the lexical block of the for-loop. At the end of the for-loop, you push a reference to %data onto @loop_data. The problem is that the next time through the loop, you modify the same %data, which is already being referenced by $loop_data[0], and push another reference to the same hash onto $loop_data[1]. Thus every element of @loop_data will be pointing to the same hash. You can fix this easily by declaring your %data hash inside the lexical block of your loop, so a new one gets created every time through the loop.
my @loop_data; for (@info) { my %data; $data{author} = $_->author; $data{content} = $_->content; $data{title} = $_->title; $data{id} = $_->id; $data{date} = $_->date; push @loop_data, \%data; }
Update: Formatting errors.
In reply to Re: Duplicate rows with Class::DBI
by friedo
in thread Duplicate rows with Class::DBI
by stonecolddevin
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |