On Thu, Dec 21, 2000 at 10:03:54PM -0600, Jay wrote: > Sorry to post a perl question, but I know there are some of you out there who > know perl. > > I've been working on this all day and while I'm learning stuff I've got about 10 > lines of code (and only 8 work) to show for my effort. > > I swear I'm RTFMs, perldoc, searching maillists... but things are not documented > for the unfamiliar (i.e. beginner, i.e stupid). Oreilly's Learning Perl (the Llama Book) is supposed to be good; but of course it's not free either. I'm currently trying to remedy the situation by adapting the notes from my Perl series at Lugod into a Free (FDL'd) book, which will of course be available over the internet. It's far from complete however, as I have not had much time to dedicate to it. > > (since I'm drowning) Maybe it will be easier if explain what I want to do. > > I want to go to a web page, I'll supply the URL as command line arg, it will > look like: > > https://some.securesite.com/cgi/purchasepage.asp?product_id=700314996C26550&prod > uct_code=' > > This will return a page composed of 3 forms, I'm concerned with the 2nd form. On > this form there are a bunch of hidden input fields and 3 fields the user is > supposed to enter (1st is text field (Quantity), second is a select list > (state), 3rd is a radio button (preferred shipper (UPS, Fedex)), and a submit > button. > > I want to set the quantity, state, and shipper, and submit the form (along with > all the hidden values). Then retrieve then next form that is returned (from the > submission of the previous form) and start the process over (but with different > inputs) working my way all the way thru the purchase process. > > I've been looking at HTML::Parser, HTML::Form, HTML::Tokeparser, they all seem > to do some of what I want. But I can't figure out how to use them. > It would be much easier to generate the HTML page from within the perl script. HTML::Template is a great way to do this, but you can also embed it in the code directly. > Could someone point me in the right direction (maybe with some examples). I've > got this code so far (get ready to laugh): > > #!/usr/bin/perl > > use strict; > use LWP::UserAgent; > use HTML::Form; > > # Extract the program name from the incarnation > # of the program > my @path = split(/\//,$0); > my $programName = $path[@path -1]; A clearer equivelant to [@path -1] would be [$#path]. > > # Get website from command line > my $url = $ARGV[0]; > > my $uri = > URI->new('https://some.securesite.com/cgi/purchasePage.asp?product_id=700314996C > 26550&product_code='); > > my $ua = new LWP::UserAgent; > $ua->timeout(60); > $ua->agent("$programName/0.1 ". $ua->agent); > > my $request = new HTTP::Request('GET' , $uri ); > my $response = $ua->request($request); > > # it works up till here # > # this stuff is new > my @forms = HTML::Form->parse($uri->path,$uri->host); I have note used HTML::Form before; however, judging from the manpage, you seem to be supplying the wrong arguments, which are: $html_document, $base_uri The second argument is just for the sake of resolving relative URIs. So the first argument should probably be $response->content, and the second should be $uri->path. Hope that helps. > > #print $forms[1]->action; > print $forms[1]->inputs; > > exit(0); This exit is completely unnecessary. > > > > Jay Strauss > [EMAIL PROTECTED] > (h) 773.935.5326 > (c) 312.617.0264 > Hope this helps! Micah
