in reply to Perl printing in the wrong order
$net="192.168.4."; $counter=10; ... $ip=$net.$counter; ... while ( $counter <= 14 ) { ... open(LOGF,">>",$logpath . $ip); ... while ( <INFILE> ) { ... $ip=$net.$counter; ... } } $counter++; }
That would probably be better as:
my $net = "192.168.4."; ... for my $counter ( 10 .. 14 ) { my $ip = $net . $counter; ... open(LOGF,">>",$logpath . $ip); ... while ( <INFILE> ) { ... } } }
$|++;
At this point in the program the currently selected filehandle is STDOUT so that is the filehandle that will be affected by the change in $|. In other words, LOGF will not be affected.
@array = split(" ",);
That is the same as saying:
@array = split;
#Only grab things associated with the current searched for ip and ends + with .com .net and so on if (($array[7] =~ /[com|org|net|gov|cc|mil]\/$ +/)&&($array[3] eq $ip)) {
In your regular expression the character class [com|org|net|gov|cc|mil] will match one character only and is exactly the same as using [cegilmnortv|], and you have nothing matching the period character like in .com or .net.
|
|---|