hi... i have the following code, that seems to be giving me an issue... i've tried running the code on both linux/windows and get the same results... so i've screwed something up.. but i can't figure out what...
basic overview: i have two hash arrays that i create, and i iterate through the arrays using two foreach loops, one inside the other... within the inner most loop, i call a sub/routine that builds a URL and attempts to download a web page.. pretty simple stuff... symptoms.. the issue i'm seeing is that i'm not able to pass one of the hash vars into the "get1" function. in fact, there is a line within the function that appears to be overwriting memory, or some other issue. when i comment out the line in question, the var that i'm looking to pass into the sub/function is able to be created, and passed as expected. the weird behavior is that the var in question "semester_key" in the main section, apparently is not present when i call the "get1" sub, as i don't even see it when i attempt to print out the vars directly before calling the "get1" sub... currently, i'm pretty stumped... i'm willing to bet that i have a simple/subtle mistake, but i can't seem to find it... i've rewritten the app/functions a number of time, thinking that i may have a typo somewhere, or some other screwup... any help/comments will be appreciated... thanks... -bruce sample code ############################################################# # # uminnesota.pl. test perl app to extract/parse class # schedule from the onestop2.umn.edu registrar site... # # # todo.. need to create the getinfo routine to parse the # class information, and write it out # ############################################################# #!/usr/bin/perl -w use HTML::TreeBuilder; use LWP::UserAgent; use URI::Escape; $ua = new LWP::UserAgent; $ua->timeout(30); $ua->agent("Mozilla/4.0 (compatible; MSIE 4.01; Windows95)" . $ua->agent); # # get the top level university class site # my $base_url = "http://onestop2.umn.edu/courseinfo/classschedule_selectsubject.jsp?institut ion=UMNTC"; my $base_search_url = "http://onestop2.umn.edu/courseinfo/viewClassScheduleTermAndSubject.do"; # get semesters my (%s1) = &getsemesters($base_url); # get depts my (%d1) = &getdepts($base_url); my $semester_key; my $dept_key; foreach $semester_key (keys(%s1)) { foreach $dept_key (keys(%d1)) { print " sem_key = $semester_key deptkey $dept_key\n"; &g1($base_search_url, $semester_key, $dept_key); } } print "we're here...\n"; die; ################################# # # ################################# sub getsemesters { my ($url) = @_; my (%semester); my $req = new HTTP::Request GET => $url; $req->content_type('application/x-www-form-urlencoded'); my $res = $ua->request($req); my $q1c = $res->content; my $_tree = HTML::TreeBuilder->new_from_content($res->content); # tree # get the specific select my @_sel = $_tree->look_down("_tag"=>"select", "name"=>"searchTerm"); #get the option/semester list my @_option = $_sel[0]->look_down("_tag"=>"option"); foreach $a (@_option) { $semester{$a->attr('value')} = $a->as_text(); } return(%semester); } # # return the hash containing the dept list # # if necessary, might need to also provide the # short name for the dept.. # sub getdepts { my ($url) = @_; my (%depts_); my $req = new HTTP::Request GET => $url; $req->content_type('application/x-www-form-urlencoded'); my $res = $ua->request($req); my $q1c = $res->content; my $_tree = HTML::TreeBuilder->new_from_content($res->content); # tree # get the specific select my @_sel = $_tree->look_down("_tag"=>"select", "name"=>"searchSubject"); #get the option/semester list my @_option = $_sel[0]->look_down("_tag"=>"option"); foreach $a (@_option) { $depts_{$a->attr('value')} = $a->as_text(); } return(%depts_); } sub g1 { my ($url, $semester_, $dept); ($url, $semester_, $dept) = @_; my $url1; print "here $url $semester_ $dept \n"; $institution = "?institution=UMNTC"; $searchterm = "&searchTerm="; $searchsubject = "&searchSubject="; $q_string = "&searchFullYearEnrollmentOnly=false&Submit=View"; $url1 = $url; $url1 = $url1 . $institution; $url1 = $url1 . $searchterm. uri_escape($semester_); $url1 = $url1 . $searchsubject. uri_escape($dept); $url1 = $url1 . $q_string; my $ua1 = new LWP::UserAgent; #$ua->timeout(30); #$ua->agent("Mozilla/4.0 (compatible; MSIE 4.01; Windows95)" . $ua->agent); my $req_ = new HTTP::Request GET => $url1; $req_->content_type('application/x-www-form-urlencoded'); my $res1 = $ua1->request($req_); #my $q1c = $res->content; #print $q1c; print "url = $url1\n"; } by commenting out the " my $res1 = $ua1->request($req_);" line, i can get the print statement prior to the "&get1" function to print out all the vars. with the line included, the "semester_key" var is not printed...