use strict; use WWW::Mechanize; use Storable qw(store retrieve freeze thaw); # init a mech instance my $mech = WWW::Mechanize->new(); # on first instance... if(! -f 'stored_mech.dat') { # create, get, freeze, and store $mech->get('http://localhost/mech-form.php'); store([freeze($mech)], 'stored_mech.dat'); exit; } # on subsequent instance... else { # retrieve, thaw, and submit form my $stored = retrieve('stored_mech.dat'); $mech = thaw($stored->[0]); $mech->submit_form(form_number=>1); } #### use strict; use WWW::Mechanize; use YAML qw(DumpFile LoadFile freeze thaw); # init a mech instance my $mech = WWW::Mechanize->new(); # on first instance... if(! -f 'stored_mech.dat') { # get, freeze, and store $mech->get('http://localhost/mech-form.php'); DumpFile('stored_mech.dat', [freeze($mech)]); exit; } # on subsequent instance... else { # retrieve, thaw, and submit form my $stored = LoadFile('stored_mech.dat'); $mech = thaw($stored->[0]); $mech->submit_form(form_number=>1); } #### Can't locate object method "scheme" via package "URI::http" at /usr/share/perl5/URI.pm line 52. #### use strict; use WWW::Mechanize; use YAML qw(DumpFile LoadFile freeze thaw); # init a mech instance my $mech = WWW::Mechanize->new(cookie_jar => {ignore_discard => 0}); # save even browser-lifetime cookies # on first instance... if(! -f 'stored_mech.dat') { # get, freeze, save cookie jar, and store $mech->get('http://localhost/mech-form.php'); $mech->cookie_jar->save('cookies.dat'); DumpFile('stored_mech.dat', [freeze($mech)]); exit; } # on subsequent instance... else { # retrieve, thaw my $stored = LoadFile('stored_mech.dat'); $mech = thaw($stored->[0]); # re-get page and reload cookies $mech->get('http://localhost/mech-form.php'); $mech->cookie_jar->clear(); $mech->cookie_jar->load('cookies.dat'); # submit form with (presumably) original session $mech->submit_form(form_number=>1); } #### use strict; use WWW::Mechanize; use YAML qw(DumpFile LoadFile freeze thaw); # init a mech instance my $mech = WWW::Mechanize->new(cookie_jar => {ignore_discard => 0}); # save even browser-lifetime cookies # on first instance... if(! -f 'stored_mech.dat') { # get, freeze, save cookie jar, and store $mech->get('http://localhost/mech-form.php'); $mech->cookie_jar->save('cookies.dat'); printf "Before freeze & save: \%s\n\n", $mech->response()->headers()->as_string(); printf "Page session id: \%s\n\n", $mech->content(); DumpFile('stored_mech.dat', [freeze($mech)]); exit; } # on subsequent instance... else { # retrieve, thaw my $stored = LoadFile('stored_mech.dat'); $mech = thaw($stored->[0]); # re-get page and reload cookies $mech->get('http://localhost/mech-form.php'); $mech->cookie_jar->clear(); $mech->cookie_jar->load('cookies.dat'); # submit form with (presumably) original session $mech->submit_form(form_number=>1); printf "After thaw & submit: \%s\n", $mech->response()->headers()->as_string(); printf "Page session id: \%s\n\n", $mech->content(); } #### ~$ perl ./mech-test.pl Before freeze & save: Set-Cookie: PHPSESSID=p9ogedv2qf1r5h664la79is1j2; path=/ Page session id: p9ogedv2qf1r5h664la79is1j2 ~$ perl ./mech-test.pl After thaw & submit: Set-Cookie: PHPSESSID=tq3devkvch2t5fsq6qbp707de4; path=/ Page session id: tq3devkvch2t5fsq6qbp707de4