##
#!/usr/bin/perl -w
use strict;
our $re = qr{
\(
(?:
(?> [^()]+ )
|
(??{ $main::re })
)*
\)
}x;
##
##
$_ = 'aa bb (cc (dd) ee) ff ';
# wanting ^----------^
print "$1\n" while m/($re)/g ;
__END__
__OUTPUT__
(cc (dd) ee)