my %DCs = ();sub MapUIDToName { my $uid = shift; my $result = $uid; # Default to the user ID my ($domain, $name) = $uid =~ m|(.*)\\(.+)|; if($domain && $name) { # See if we've already looked up this DC $domain = lc $domain; my $server = ""; if(!defined($DCs{$domain})) { my $rc = Win32API::Net::GetDCName("", $domain, $server); # Discard any leading \\ that might be there $server =~ s/\\\\//; $DCs{$domain} = $server; } else { $server = $DCs{$domain}; } my %hash = (); $rc = Win32API::Net::UserGetInfo($server, $name, 10, \%hash); $result = $hash{'fullName'} || $uid; } return Unicode:tring::latin1($result);}