#! D:\Straberry\perl\bin\perl -w use strict; use Win32::OLE qw/in/; use Win32::OLE::Const 'Microsoft Outlook'; #use Win32::OLE::Variant; my $OL = Win32::OLE->GetActiveObject('Outlook.Application') || Win32::OLE->new('Outlook.Application') or die "$!\n";; my $NameSpace = $OL->GetNameSpace("MAPI"); my $Folder = $NameSpace->GetDefaultFolder("olFolder"); #print ref($Folder->{Items}) . "\n"; #foreach my $subfolder ( in $Folder->Folders) { # printf "%s\n", $subfolder->{Name}; #} print "OLE object's properties:\n"; foreach my $Key (sort keys %$OL) { my $Value; eval {$Value = $OL->{$Key} }; $Value = "***Exception***" if $@; $Value = "" unless defined $Value; $Value = '['.Win32::OLE->QueryObjectType($Value).']' if UNIVERSAL::isa($Value,'Win32::OLE'); $Value = '('.join(',',@$Value).')' if ref $Value eq 'ARRAY'; printf "%s %s %s\n", $Key, '.' x (40-length($Key)), $Value; }