use Win32::OLE qw(in); Win32::OLE->Option(CP => Win32::OLE::CP_UTF8); $obj = Win32::OLE->new('Scripting.FileSystemObject'); $folder = $obj->GetFolder("."); $collection= $folder->{SubFolders}; foreach $value (in $collection) { $foldername= %$value->{Name}; $folder=$obj->GetFolder("$foldername"); print (Win32::FormatMessage(Win32::OLE->LastError())|| "$foldername"); }