use Win32; use Win32::OLE; use Win32::OLE::Enum; # louder errors Win32::OLE->Option(Warn => 3); ... my $Enum = Win32::OLE::Enum->new($Recipe->Placements); while (defined(my $placement = $Enum->Next)) { Win32::MsgBox($placement->PlacementPart->{Refdes}); } # - or - use Win32::OLE qw/ in /; for my $placement (in $Recipe->Placements) { Win32::MsgBox($placement->PlacementPart->{Refdes}); }