Стандартный способ - использовать модуль Win32 :: FileSecurity :
use Win32::FileSecurity qw(Set MakeMask);
my $dir = 'c:/newdir';
mkdir $dir or die $!;
Set($dir, { 'Power Users'
=> MakeMask( qw( READ GENERIC_READ GENERIC_EXECUTE ) ) });
Обратите внимание, что Set
перезапишет разрешения для этого каталога. Если вы хотите редактировать существующие разрешения, сначала вам нужно Get
их:
my %permissions;
Win32::FileSecurity::Get($dir, \%permissions);
$permissions{'Power Users'}
= MakeMask( qw( READ GENERIC_READ GENERIC_EXECUTE ) ) });
Win32::FileSecurity::Set($dir, \%permissions);