This is somewhat closer to what the OP seems to want, since it actually uses a match operator (although not
$1 - I wonder if he will consider this to be acceptable!), but then you're using it to match everything that is not an underscore and collect it, in which case as you surely already know
split would act the other way round -i.e. more directly- and would be the best tool:
my @all = split /_+/, $string;