WWW::Mechanize -- bug in find_all_images

Peter Stevens <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.lwp
Message-ID <[email protected]>
Hi Andy,

This little script:

    use WWW::Mechanize;

    my $mech = WWW::Mechanize->new();
    $mech->get ( "http://news.google.com" );
    my @tImages = $mech->find_all_images( url_regex => qr/imgurl=/ );

Produces the following output: 

    Use of uninitialized value in pattern match (m//) at .../WWW/Mechanize.pm line 1053.
    Use of uninitialized value in pattern match (m//) at .../WWW/Mechanize.pm line 1053.
    Use of uninitialized value in pattern match (m//) at .../WWW/Mechanize.pm line 1053.
    ...
      

This patch to v1.30 fixes the problem:

--- Mechanize.pm-1.30   2007-06-16 22:42:27.000000000 +0200
+++ Mechanize.pm        2007-06-16 22:59:21.000000000 +0200
@@ -1049,10 +1049,11 @@
     # No conditions, anything matches
     return 1 unless keys %$p;

-    return if defined $p->{url}           && !($image->url eq $p->{url} );
-    return if defined $p->{url_regex}     && !($image->url =~ $p->{url_regex} );
-    return if defined $p->{url_abs}       && !($image->url_abs eq $p->{url_abs} );
-    return if defined $p->{url_abs_regex} && !($image->url_abs =~ $p->{url_abs_regex} );
+    return if defined $p->{url}           && !($image->url  && $image->url eq $p->{url} );                     #[1]
+    return if defined $p->{url_regex}     && !($image->url  && $image->url =~ $p->{url_regex} );
+    return if defined $p->{url_abs}       && !($image->url_abs  && $image->url_abs eq $p->{url_abs} );
+    return if defined $p->{url_abs_regex} && !($image->url_abs_regex  && $image->url_abs =~ $p->{url_abs_regex} );
+
     return if defined $p->{alt}           && !(defined($image->alt) && $image->alt eq $p->{alt} );
     return if defined $p->{alt_regex}     && !(defined($image->alt) && $image->alt =~ $p->{alt_regex} );
     return if defined $p->{tag}           && !($image->tag && $image->tag eq $p->{tag} );


I'm not sure if all 4 lines really need the change - the second line 
would fix my problem - but I put them in to be safe :-)

Cheers,

Peter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.