use Data::Dumper; print Dumper map { my $a=$_; map { my $b=$_; map { $a**2 == $b **2 + $_ **2 ? [ $_, $b, $a ] : () } (1..$b) } (1..$a) } (1..10); print Dumper grep { $_->[0]**2 == $_->[1] **2 + $_->[2] **2 } map { my $a=$_; map { my $b=$_; map { [ $a, $b, $_ ] } (1..$b) } (1..$a) } (1..10);