SPUG: while question

Terry Nightingale tnight at pobox.com
Tue Sep 16 12:42:06 CDT 2003


Peter,

I personally would use either $sth->fetchrow_hashref() or 
$sth->fetchrow_arrayref() in exactly the manner you describe below.  The 
nice thing about getting a reference to the data rather than just the 
data itself is exactly what you're running up against.  Even if you have 
a reference to '0' or undef, the reference itself is both defined and 
true, so your loop works correctly.

Hope that helps,
Terry


Peter Darley wrote:

> Folks,
> 	I have yet another stupid question:
> 
> 	I regularly get data out of a DBI statement handle by doing:
> 
> while ($MyData = $sth->fetchrow())
> {
> 	stuff
> }
> 
> 	This falls down when the data returned from the statement is '0', since
> it's not true, and the while breaks.  I've tried while (defined $MyData =
> $sth->fetchrow()), but this is not syntacticly correct, and would break on a
> database NULL (which is undef in perl) anway.  I can do something like while
> ($MyRef = $sth->fetchrow_hashref()) {$MyData = $$MyRef{datapoint}; stuff},
> but I'm not too fond of that.  Does anyone have a suggestion on a better way
> to construct this loop?
> 
> Thanks,
> Peter Darley
> 
> _____________________________________________________________
> Seattle Perl Users Group Mailing List  
> POST TO: spug-list at mail.pm.org  http://spugwiki.perlocity.org
> ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list
> MEETINGS: 3rd Tuesdays, U-District, Seattle WA
> WEB PAGE: http://www.seattleperl.org
> 
> 
> 




More information about the spug-list mailing list