use Regexp::Common qw(balanced); if ($foo =~ / ( $RE{balanced} ) /x) { print "grabbed $1"; }