perl: loop over function that returns array or undef -


i looking proper perl-ism issue. can work around have ask...

i using html::treebuilder , using look_down method. returns array or scalar depending on context , returns undef if no matching tag found. cool.

i want following:

foreach $tag ( @{ $head->look_down('_tag', 'link') } ) {     ... } 

but if there no link tag function returns undef , generates error can't use undefined value array reference @ mycgi.cgi line ###. try modification:

foreach $tag ( @{ $head->look_down('_tag', 'link') || [] } ) {     ... } 

my thought if method returns undef changed empty array. works when there no link tags. but, if there @ least 1 expected tag there error: not array reference @ mycgi.cgi line ###.

do need bite bullet , break method call out of loop , check undef before entering loop?

"returns array" mentioned in documentation incorrect; perl subroutines return lists (though in scalar context list 1 element).

it not return undef in list context, returns empty list (return no arguments returns empty list in list context , undef in scalar context). can loop on returned values no @{ } required:

foreach $tag ( $head->look_down('_tag', 'link') ) {     ... } 

Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -