http://www.perlmonks.org?node_id=1010324


in reply to Use of uninitialized value in subroutine entry at C:/Perl/lib/HTML/TreeBuilder.p m line 108.

Hello kanthsri, and welcome to the Monastery!

I re-formatted your code as follows:

#! perl use Modern::Perl; use LWP::Simple; use URI::Escape; use HTML::TreeBuilder; use Try::Tiny; my $look_for = "perl"; my $contents = get "http://www.amazon.com/s/ref=nb_sb_noss?url=search- +alias%3Dstripbooks&field-keywords=" . uri_escape($look_for); my $html = HTML::TreeBuilder->new_from_content($contents); for my $item ($html->look_down(id => qr/result_\d+/)) { # $item->dump; # find out structure of HTML my $author = try { $item->look_down(class => 'ptBrand')->as_trimme +d_text }; print "$author\n"; } $html->delete;

and ran it with the following result:

16:54 >perl 452_SoPW.pl by Randal L. Schwartz, brian d foy and Tom Phoenix by Tom Christiansen, brian d foy, Larry Wall and Jon Orwant Ph.D. by Tom Christiansen and Nathan Torkington by Randal L. Schwartz, brian d foy and Tom Phoenix by Johan Vromans by Joseph N. Hall, Joshua A. McAdams and brian d foy by Randal Schwartz, Tom Phoenix and brian d foy by David N. Blank-Edelman by brian d foy by Curtis Poe by Damian Conway by Paul E. Hoffman 16:56 >

What output do you get? In what way is the code “not executing” in your system?

Update: Just realised that the title answers my question! What version of HTML::TreeBuilder are you running? Mine is v5.01. What is line 108 in your version of this module?

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

  • Comment on Re: Use of uninitialized value in subroutine entry at C:/Perl/lib/HTML/TreeBuilder.pm line 108.
  • Select or Download Code

Replies are listed 'Best First'.
Re^2: Use of uninitialized value in subroutine entry at C:/Perl/lib/HTML/TreeBuilder.p m line 108.
by kanthsri (Initiate) on Dec 26, 2012 at 07:25 UTC
    v5.16.1 this is my version of perl and in treebuillder.pm the unitialised value is $new->parse($whunk);
      this is the version of treebuilder v5.02

        Line 108 of HTML::TreeBuilder is a call to HTML::TreeBuilder::parse, which (according to lines 1967–8 of the source code) is inherited from HTML::Parser. Parts of that module — including the parse method — are implemented in C, which is compiled for your local machine when you install the module.

        So, it seems there are two possibilities:

        1. The call to get is failing, as suggested by Anonymous Monk, below. So, the first thing to do is to print out the variable $contents immediately following the call to get but before the call to new_from_content, to verify that get is working correctly.

        2. If it is, then check the installation of HTML::Parser on the machine where the code is failing. Perhaps try re-installing this module.

        Hope that helps,

        Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,