To retrieve the value of a property defined as an enumeration, you must dereference its value from within the containing object by qualifying the property with ->val. For example, the power state of a virtual machine (powerState) is a member of the runtime data object.

To retrieve the value of powerState, you must dereference the two containing objects (the view object and the runtime data object) and the value itself (val), as follows:

$vm_view->runtime->powerState->val

Because powerState is an enumeration, you use runtime->powerState->val to retrieve its string value.

foreach my $vm (@$vm_views) {
   if ($vm->runtime->powerState->val eq 'poweredOn') {
      print "Virtual machine " . $vm->name . " is powered on.\n";
      }
   else {
      print "Virtual machine " . $vm->name . " is not powered on.\n";
}