my @dirnames = qw(dir1 dir2 ...); my %permissions = ( user1 => { dir1 => 0, dir2 => 1, ... }, user2 => { dir1 => 1, ... }, ... ); # Ein Element setzen: $permissions{user1}{dir1} = 1; # usw. # Alles auslesen und in CSV speichern: open(my $csv, '>', 'CSV-FILE.csv') or die $!; select $csv; print ";$_" for @dirnames; print "\n"; for my $user (keys %permissions) { print "$user;"; for my $dir (@dirnames) { print $permissions{$user}{$dir} ? "1;" : "0;"; } print "\n"; } select STDOUT; close $csv;