#!perl use strict; use warnings; use feature qw/ say /; use Data::Dumper; use Algorithm::Permute; ## Some code here that produces @prdct ... my $product = Algorithm::Permute->new( \@prdct ); say Dumper( $product ); # did you get what you expected? while ( my @res = $product->next ) { say Dumper( @res ); # now did you get what you expected? # do something else ... }