my @keycards= qw(A B C);
my @users = qw(peter james john luke andrew judas);
...
foreach my $user (@users) {
sleep(int(rand(3)));
my $key = pop(@keycards);
$pm->start and next;
####
my $pm = Parallel::ForkManager->new(2);
####
my $pm = Parallel::ForkManager->new(@keycards - 1);