http://qs1969.pair.com?node_id=395060

stevenrh has asked for the wisdom of the Perl Monks concerning the following question:

Hello All, I am using an array of IP addresses to plug into a link, but when i do so, the link is segmented into 2.

I would like the link to be contiguous, ands in the future i would like to set up a socket that connects and and does an http get with the link.
(i want to autmoate my abuse duties, ie: blacklist removal, without so many clicks and Alt-Tabs) Any help would be appreciated. below is the code and the output......thx

#!/usr/bin/perl -w $file = '/home/steven/x.x-sort'; open(INFO, $file); @lines = <INFO>; close(INFO); my $i; foreach $i(@lines){ print "\nhttp://website.org/session2?ip=$i&email=you%40there.c +om\n"; }
this is the output from that:

http://website.org/session2?ip=x.x.x.x
&email=you%40there.com

http://website.org/session2?ip=x.x.y.y
&email=you%40there.com

Replies are listed 'Best First'.
Re: formatting print output from array
by Anonymous Monk on Sep 29, 2004 at 17:07 UTC
      thanks mate, but that opens another can of worms. now all lines are together,and "\n" no longer works!!!
Re: formatting print output from array
by Eimi Metamorphoumai (Deacon) on Sep 29, 2004 at 18:04 UTC
    The problem is that when you read in the lines, each ends with a newline. So you have to remove those with chomp. I'm guessing the problem you had was running chomp on your output, not on your input.

    Incidentally, unless there's a reason you need all of the input in an array, you might find it a lot more efficient to deal with each line as it comes in. That is,

    #!/usr/bin/perl -w use strict; my $file = '/home/steven/x.x-sort'; open(INFO, $file) or die "Couldn't open $file: $!"; while (<INFO>){ chomp; print "\nhttp://website.org/session2?ip=$_&email=you%40there.c +om\n"; } close(INFO) or die "Error writing $file: $!";
    If for whatever reason your code is more complicated and you really do need the @lines array, you need to chomp it, as in chomp(@lines = <INFO>), which will remove the trailing newlines from each line.
      You can golf the loop down like this:
      while (chomp(<INFO>)){ print "\nhttp://website.org/session2?ip=$_&emai +l=you%40there.com\n" }
      require General::Disclaimer;

      All code, unless otherwise noted, is untested

      "All it will give you though, are headaches after headaches as it misinterprets your instructions in the most innovative yet useless ways." - Maypole and I - Tales from the Frontier of a Relationship (by Corion)

        Or golf the whole thing to:

        (@ARGV, $/) = '/home/steven/x.x-sort'; $_ = <>; s[.+][http://website.org/session2?ip=${&}&email=you%40there.com]g; print;