#!/usr/bin/perl use strict; use warnings; use List::Util qw(shuffle); use Data::Dumper; $Data::Dumper::Indent = 0; unless (defined $ARGV[0]) { $ARGV[0] = 5; } for (1 .. factorial($ARGV[0])) { my @array = (0 .. ($ARGV[0] - 1)); @array = shuffle(@array); print Dumper( \@array ) . "\n"; } sub factorial { my $n = shift; my $f = 1; $f *= $n-- while $n > 0; return $f; }