in reply to system( ), printing output & matching

You've got several problems here:

So, what I think is happening is that Perl has the file open, then you use system calls to write to it. Then you do the second Perl open, which causes perl to flush out what it thinks should be in the file (which is nothing) and so you land up with an empty file.

check out Net::Ping for an easier way to do the pinging

  • Comment on Re: system( ), printing output & matching

Replies are listed 'Best First'.
Re: Re: system( ), printing output & matching
by zuinc (Novice) on Apr 05, 2002 at 20:16 UTC
    I made some changes but continue to get the same output, 'ERROR'. I know my code was kinda messy and i tried to clean it up by closing all the filehandles before reopening them and a few other changes. Heres what I have:
    # Create a list of all possible IP addresses within subnet open(ALLIP, ">allip.list") || die "Unable to create file: allip.list\n +"; for ($i=0; $i<=20; $i++) { print ALLIP "$ip_subnet.$i\n"; } close(ALLIP); open(ALLIP, "allip.list") || die "Unable to open file: allip.list\n"; open(PINGALLIP, ">pingallip.list") || die "Unable to open file: pingal +lip.list"; while (<ALLIP>) { system("ping $_ >pingallip.list") && "Unable to create file: p +ingallip.l ist"; chomp; } close(ALLIP); close(PINGALLIP); open(OUTPUT, ">output.list"); open(PINGALLIP, "pingallip.list") || die "Unable to open file: pingall +ip.list"; my $line = 0; while (<PINGALLIP>) { chomp; if ($_ =~ m/is alive/) { $line++; last; } } close(PINGALLIP); if ($line) { print OUTPUT "$_\n"; } else { print "ERROR\n"; }
    Any more help would be greatly appreciated. ~_^

    ~Zuinc
      open(ALLIP, "allip.list") || die "Unable to open file: allip.list\n"; while (<ALLIP>) { chomp; system("ping $_ >>pingallip.list"); }