sub vert { my @{@piece[0]} = @_[0,1]; my @{@piece[1]} = @_[2,3]; my $depth = @_[4] + 1; for my $piece ( 0..1 ) { for my $x ( 0 .. $piece[$piece][0] ) { next unless ( $x or ( $depth > 1 )); horz( $x, $piece[$piece][1], $piece[$piece][0] - $x, $piece[$piece][1], $depth ); } } } # sub vert sub horz { # similar code for horz } my ($scrap, $count1, $count2) = vert( 34, 44, 0, 0, 0 );