use strict; use warnings; my $num_players = 6; my @players = (1..$num_players); push @players, 'bye' if @players % 2; # Even number my $num_rounds = @players - 1; for my $round (1..$num_rounds) { # Fold array to assign matches my @matches = map {join('-', sort @players[$_, $#players - $_])} (0..@players/2-1); # Print Results print "$round) " . join(', ', @matches), "\n"; # Rotate last position to second splice @players, 1, 0, pop(@players); }