in reply to why does my as_string fail the second time its used

You don't tell us in what way the as_string method "fails", but from your description of locating the offending line, I assume that your program stops executing there.

My guess is, that it is not the as_string mehtod that actually fails, but simply that $user_page is not what you believe it to be - most likely, it's undefined, as $ua->request($req) returned undef because of some failure.

All I can recommend to you is more thorough error checking and logging all output (especially all the output to STDERR) to a logfile, possibly by reopening STDOUT and STDERR to files, or setting up $SIG{__WARN__} and $SIG{__DIE__} handlers that call progress_log :

sub log_die { progress_log( '***' . join ' ', @_ ); }; sub log_warn { progress_log( '???' . join ' ', @_ ); }; BEGIN{ $SIG{__WARN__} = \&log_warn; $SIG{__DIE__} = \&log_die; };

Of course, you might also be interested in switching from manipulating LWP requests to using WWW::Mechanize, which tries harder to be just like any browser.

perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The $d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider ($c = $d->accept())->get_request(); $c->send_response( new #in the HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web