in reply to regex to return line with name but not if it has a number

Here's what I have but it's not working:
if ($line =~ m/\b-|b(^[A-Z][a-z]+\s[A-Z][a-z]+$+?!0-9)\|b/) {print "$l +ine";}

It helps if you go through the elements of the regexp telling in plain words what it is trying to match, or writing it as an extended regexp and comment it:

if ( $line =~ m/ # match \b- # a word boundary followed by a - | # or ( # (beginning of capture) b # the letter "b" ^[A-Z] # a capital letter anchored at start of string # ...wait, what? at the beginning?

I just stop here. Matching a literal b and then something anchored at start of string never succeeds. All wrong. Start over. What are you trying to match?

This regexp looks like some working one which has been tinkered with, without having read perlre trying to understand as much as possible of it. Do that now.

Post the original regex, samples and expected output.

perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'