#!/usr/bin/perl
my $string= "blah, foo(b, (a,b)), bar(c,d), yo";
my @string = split /\((?>[^()]|(?R))*\)(*SKIP)(*F)|\s*,\s*/, $string;

foreach(@string) {
    print "$_\n";
}