kanthsri has asked for the wisdom of the Perl Monks concerning the following question:

Belowis the code that executes in system but not executing in my system
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%3Dstr +ipbooks&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;
  • Comment on Use of uninitialized value in subroutine entry at C:/Perl/lib/HTML/TreeBuilder.p m line 108.
  • Download Code

Replies are listed 'Best First'.
Re: Use of uninitialized value in subroutine entry at C:/Perl/lib/HTML/TreeBuilder.pm line 108.
by Athanasius (Archbishop) on Dec 26, 2012 at 06:59 UTC

    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,

      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
Re: Use of uninitialized value in subroutine entry at C:/Perl/lib/HTML/TreeBuilder.p m line 108.
by 2teez (Vicar) on Dec 26, 2012 at 06:49 UTC

    Please put your code in <code> tages. See How do I post a question effectively?

    Update:
    Run this you should have your result: Modified OP script

    use warnings; use strict; 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_trimmed_text }; print "$author\n"; } $html->delete;

    Output:
    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
    Update II:
    After updating I saw Athanasius, has it too. ++ to fast fingers!!!

    If you tell me, I'll forget.
    If you show me, I'll remember.
    if you involve me, I'll understand.
    --- Author unknown to me
      Thank you for getting information about <code> tag for formatting.But the output is same.
Re: Use of uninitialized value in subroutine entry at C:/Perl/lib/HTML/TreeBuilder.p m line 108.
by Anonymous Monk on Dec 26, 2012 at 08:12 UTC

      i tried it .. butgetting the same result..

        So $contents is undef, meaning get() failed to get anything