in reply to Using GET in a loop

perldoc -f open

If MODE is '>>', the file is opened for appending, again being created if necessary.

Try this -

Open FILE, "> C:/perl/output.txt"; # <-- notice the single '>'

 

Replies are listed 'Best First'.
Re^2: Using GET in a loop
by New Novice (Sexton) on Sep 17, 2004 at 09:23 UTC
    I want to append the file, but with new information.

    $content gets appended, that is the problem. Every time the loop is executed, $content gets bigger and bigger as the newly retrieved website is added to the previously retrieved websites. It still does so when I "empty" $content ($content= " ";) every time before retrieving a new website and use a local $content variable.

    Thus, my problem is not with the output of the data into the file but with the input.

    Thank you for your rapid reaction!

      As Zaxo points out, your code sample doesn't run. Can I be so bold as to suggest that your (abbreviated) code is not useful for troubleshooting and that you should cut and paste the actual code; the code that contains the bug.

       

        Right, here is the code with the bug.

        As you will see, the actual webpages contain four different document numbers (COM (2000) 862, COM (2000) 847, COM (2000) 844, COM (2000) 840) whereas the program always delivers the same one (COM (2000) 862), which is the one of the first webpage accessed.

        Presumably, this is due to an internal storage variable of the GET routine, which is appended and not replaced each time a new GET request is processed.

        #! C:/programme/perl use LWP::Simple; use LWP::UserAgent; use HTML::Stripper; use warnings; use strict; our $stripper = HTML::Stripper->new( skip_cdata => 1, strip_ws => 1 ); our $ID; our @ID=(161060, 160920, 160999, 160899); our $count=1; foreach $ID (@ID) { my $content; my $content_full; my $url="http://europa.eu.int/prelex/detail_dossier_real.cfm?CL=en&Do +sId="."$ID"; $content_full=" "; $content_full=get($url); $content=$stripper->strip_html($content_full); our $i_type=index($content, " COM "); our $d_type=substr($content, $i_type+1,3); our $d_year=substr($content, $i_type+6,4); our $d_number=substr($content, $i_type+12,3); our $proposal="$d_type "."\($d_year\)"." $d_number"; print "Proposal\: $proposal \n"; open DB, ">> C:/programme/perl/test/prelex.dta" or die "Problem: $!"; flock (DB, 2); print DB "$proposal\n"; close DB; }