!/usr/bin/perl use strict; use warnings; my @list = ([0..1], [2..4], [5..8]); my @sets = []; for my $eacharray (@list) { @sets = map { my @prev = @$_; map [ @prev, $_ ], @$eacharray } @sets; } use Data::Dump 'dd'; dd @sets; #### !/usr/bin/perl use strict; use warnings; open my $handle, 'input.txt'; open my $handle, '<', 'input.txt'; chomp(my @list = <$handle>); close $handle; my @sets = []; for my $eacharray (@list) { @sets = map { my @prev = @$_; map [ @prev, $_ ], @$eacharray } @sets; } use Data::Dump 'dd'; dd @sets; The input.txt file is: [0..1] [2..4] [5..8]