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

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

Hello

I have a very small, standard connection to website that gets the value of an input field. I can get the value and print it fine, but I cannot assign it to a variable!!! Can anyone see why this is:

.... my $mech = WWW::Mechanize->new(agent => 'Windows IE 6'); my $url = "https://www.somesite.com"; $mech->get($url); # This next line prints, to screen, the value as expected print "Value: " . $mech->field('sessionid'); # These next 2 lines prints nothing! my $sessionid = $mech->field('sessionid'); print "$sessionid\n";
Can anyone see why this might be!?

Replies are listed 'Best First'.
Re: WWW::Mechanize input value
by Athanasius (Archbishop) on Aug 04, 2012 at 14:40 UTC

    Hello packetstormer,

    The WWW::Mechanize->field method is actually for setting the field value. Your first call sets the value of 'sessionid' to undef (since no second argument is supplied), and returns the previous value. Your second call gets the new, empty value.

    Use the WWW::Mechanize->value method instead. This gets the field value without the side effect of resetting it:

    my $mech = WWW::Mechanize->new(agent => 'Windows IE 6'); my $url = "https://www.somesite.com"; $mech->get($url); print "Value: '", $mech->value('sessionid'), "'\n"; my $sessionid = $mech->value('sessionid'); print "\$sessionid = '$sessionid'\n";

    See WWW::Mechanize, under “FIELD METHODS.”

    HTH,

    Athanasius <°(((><contra mundum