#! /usr/bin/perl use strict; use warnings; use Data::Dumper; my $arrayref = process('test',0); foreach(@{$arrayref}){  print "Value: ",$_->[0],"\tLayer: ",$_->[1],"\n"; } sub process{  my ($name,$layer) = @_;  $layer++;  my @results;  return \@results if($layer == 4);  foreach(0..5){    push(@results,[$_,$layer]);    push(@results,@{process('name',$layer)}) if($_ == 3);  }  return \@results; }