sub balanced { $_ = shift; while (s/[(][^()]*[)]//) {}; return 0 if /[()]/; return 1; } #### sub balanced { my $string = shift; my $stack = 0; for my $index (0..length($string) - 1) { my $char = substr($string, $index, 1); if ($char eq '(') { $stack++; } elsif ($char eq ')') { $stack--; } #### return 0 if $stack < 0; } return $stack ? 0 : 1; }