in reply to Re: While count ---don't see it
in thread While count ---don't see it

Well, thanks, figured that out.
while($count < @processlist){ $count++ }

But, now my count is set to the number of the last process. It doesn't start at 0, even though I have it set in $count = 0;
Any clues?
curtisb

Replies are listed 'Best First'.
Re: Re: Re: While count ---don't see it
by Rex(Wrecks) (Curate) on Mar 29, 2002 at 21:30 UTC
    Try
    while($count < $#processlist){ $count++ }


    "Nothing is sure but death and taxes" I say combine the two and its death to all taxes!
      or even ...
      $count = $#processlist - 1;
        When you check an array in a scalar context, you get the number of elements in the array. When you check $#, you get the highest subscript, which is one less than the number of elements since the array is zero-based. So, you would want to add one, not subtract.

        Also, the while loop also promises not to alter $count if $count is already higher than the number of elements in @processlist. So, I believe you would need this:

        $count = @processlist unless ( $count > @processlist ); ## Or $count = $#processlist + 1 unless ( $count > ($#processlist + 1));
      Sorry, that didn't work. It just returned the value of 38.
      Thanks
      curtisb
        Hmm, just tried it with my fix and it worked just fine. Oh yeah, and use strict!

        UPDATE: For it to do what you want it to try this:
        UPDATE2: updated code with some semblance of strict
        #/usr/bin/perl -w use Win32::IProcess; use strict ; my $process = new Win32::IProcess || die "Unable to create new process +!: $!\n"; my @processlist ; $process -> EnumProcesses(\@processlist) || die "Unable to get process + list: $!\n"; my $count = 0; foreach $process(@processlist) { my $pid = $process ->{ProcessId}; my $name = $process->{ProcessName}; if ($count <= $#processlist) { $count++; } format STDOUT_TOP = Number Process Name Process Id ====== =================== ============= . format STDOUT = @<<<< @<<<<<<<<<<<<<<<<<<< @<<<< $count, $name, $pid . write; }

        You only asked for help with your while loop, and I fixed it. the above code fixes ALL your issues

        "Nothing is sure but death and taxes" I say combine the two and its death to all taxes!