Perlers,

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?

# how much pizza has been eaten?

use warnings;
use strict;

use Win32::OLE('in');

my $megaBytes = "1048576"; 
my $gigaBytes = "1073741824";

my %ignoreDriveTypes = (
  'floppy'  => '2',
  'network' => '4',
  'cdROM'   => '5',
);

my $sobj =
Win32::OLE->GetObject('winmgmts:{impersonationLevel=impersonate}')
    or die "Unable to create server object: " . Win32::OLE->LastError()
. "\n";

foreach my $process (in $sobj->InstancesOf("Win32_LogicalDisk")) {

  foreach my $type ( keys %ignoreDriveTypes ) {
    next if ( $process->{DriveType} == $ignoreDriveTypes{$type} );
  }

  #next if ( $process->{DriveType} == 4 );
  #next if ( $process->{DriveType} == 5 );
  print "\n+--+\nDevice Name: \t\t" . $process->{Name} . "\n";
  print "DriveType: \t\t" . $process->{DriveType} . "\n";
  printf "Size: \t\t\t%4.2f GB\n", $process->{Size} / $gigaBytes;
  printf "FreeSpace: \t\t%4.2f GB\n", $process->{FreeSpace} /
$gigaBytes;
}

TIA,

ry

--
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