Mark Vanmiddlesworth wrote: > > this is a script that systematically pings every host on the network, > and writes the output to the screen. If the -n arg is specified, it > will also write to a disk. What's wrong with the syntax, especially > line 12? > > #!/usr/bin/env perl > > $x = 1; > $b = 0; > for ($x = 1; $x < 256; $x++) { > $a = `ping -q -c 1 192.168.1.$b`; > $b += 1; > print "192.168.1.$b "; > print $a; > $usage="ping.pl [-n]" > if ($arg = "-n") {$e = 0} > else {$e = 1} > if ($e = 1) { > open (LOG, ">>/perl/pinglog.txt"; > print `date`; > print $a; > } > else {} > } > > Am I doing my ifs correctly? Thanks,
You should probably check the arguments and open the log file outside of the loop. You should use warnings and strict when developing your program. #!/usr/bin/env perl use warnings; use strict; use Socket; use Net::Ping; use Getopt::Std; my $usage = "ping.pl [-h] [-n [logfile]]\n"; my %opts; getopt( 'hn', \%opts ); die $usage if exists $opts{h}; if ( exists $opts{n} ) { $opts{n} = '/perl/pinglog.txt' if $opts{n} eq ''; open LOG, '>>', $opts{n} or die "Cannot open $opts{n}: $!"; select LOG; $|++; } my $start = inet_aton( '192.168.1.1' ); my $end = inet_aton( '192.168.1.255' ); my $p = Net::Ping->new(); for my $ip ( $start .. $end ) { my $host = inet_ntoa( $ip ); print scalar localtime, ' ' if exists $opts{n}; print "$host is "; print 'NOT ' unless $p->ping( $host, 2 ); print "reachable.\n"; } $p->close(); __END__ > got root? Why yes ... yes I do. :-) John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]