> -----Original Message-----
> From: Jeff 'japhy' Pinyan [mailto:[EMAIL PROTECTED]
> Sent: Friday, September 23, 2005 3:45 PM
> To: Ryan Frantz
> Cc: beginners perl
> Subject: Re: Hash Problem
> 
> On Sep 23, Ryan Frantz said:
> 
> > I'm working on a small script that checks the free space on local
fixed
> > drives on my system.  Since there other drive types (i.e. floppy,
> > CD-ROM, network maps) I want to exclude those.  I decided to use a
hash
> > but the script still displays all of the drives on my system.  If I
just
> > use simple 'next' statements, it works fine.  I've placed the block
> > inside the original foreach and even tried wrapping it around the
print
> > statements to no avail.  What gives?
> 
> The problem is you've got another loop, and that's what the 'next' is
> getting you out of.
> 
> > my %ignoreDriveTypes = (
> >  'floppy'  => '2',
> >  'network' => '4',
> >  'cdROM'   => '5',
> > );
> 
> I would invert this:
> 
>    my %ignoreDriveTypes = (
>      2 => 'floppy',
>      4 => 'network',
>      5 => 'cdrom',
>    );
> 
> Then you can say:
> 
> > foreach my $process (in $sobj->InstancesOf("Win32_LogicalDisk")) {
> 
>      next if $ignoreDriveTypes{ $process->{DriveType} };

So this would evaluate to true if $process->{DriveType} matches a key in
the hash?

> 
> since the "names" associated with the types are really just satellite
> data.
> 
> >  foreach my $type ( keys %ignoreDriveTypes ) {
> >    next if ( $process->{DriveType} == $ignoreDriveTypes{$type} );
> >  }
> 
> Here was the problem.  This 'next' was working on THIS foreach loop,
not
> the $process foreach loop.  You'd have had to put a label on the outer
> foreach loop like so:
> 
>    PROCESS: foreach my $process (...) {
>      foreach (...) {
>        next PROCESS if ...;
>      }
>      ...
>    }
> 
> --
> Jeff "japhy" Pinyan        %  How can we ever be the sold short or
> RPI Acacia Brother #734    %  the cheated, we who for every service
> http://www.perlmonks.org/  %  have long ago been overpaid?
> http://princeton.pm.org/   %    -- Meister Eckhart

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to