On Tue, 11 Feb 2003 20:11:46 -0500, Wiggins D'Anconia wrote: In addition to Wiggins ...
> foreach my $x (1 .. 255) { > >> $a = `ping -q -c 1 192.168.1.$b`; ^^ Could it be that $x instead of $b was meant ?! >> $b += 1; You are simulating the work of the loop, as you let $b increment each loop and the loop has 255 loops. Forget $b. BTW, allthough it's possible, it's not a good style to work with variables $a and $b. They are used in Perl globally, e.g. for sorting. See perldoc perlvar for details. >> print "192.168.1.$b "; >> print $a; >> $usage="ping.pl [-n]" > > Missing semi-colon.... > >> if ($arg = "-n") {$e = 0} ^ The = is an assignment not a comparator. To test two variables for numerical equalness use ==, for string equalness use eq. In your case, it's of course if ($arg eq "-n"). See again perldoc perlop for details. Where does $arg come from. If you meant the (first) argument passed at the command line, it would be $ARGV[0]. >> else {$e = 1} A shorter (and getting more skilled also more readable) way, to set a variable to one of two values depending on a condition is the following idiom: my $e = ($ARGV[0] eq '-n') ? 0 : 1; >> if ($e = 1) { ^ Again you meant == instead of =. But if the only sense of $e is to flag whether the argument is -n or not, why not write it directly: if ($ARGV[0] eq '-n') { >> open (LOG, ">>/perl/pinglog.txt"; > > Missing parentheses. And you should always check to see if open succeeded: > > open(LOG,">>/perl/pinglog.txt") or die "Can't open log for appending: $!"; > >> print `date`; Perl can do it also for you: print scalar localtime; >> print $a; >> } >> else {} You needn't write the else part if it is empty. Just leave it izt. >> } >> > > While not using semi-colons at the end of blocks is syntactically > correct, IMHO it is a very *bad* habit to get into. As it leads to the > above. > > Couple other things, > > 1. Name your variables something useful, you have x, b, a, e, and arg, > all of which tell yourself and future readers nothing about what they > are doing. > > 2. Theoretically your script could open and close the same file to > append to 255 times, you should check to see if you need to open the log > before the foreach. Then print to the log if need be during the foreach, > but don't reopen it, especially since you aren't closing it, which > brings us to. > > 3. Remember to close your open files when you are done with them. > > Are you in a learning mode, or writing production code? Best Wishes, Janek -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]