Janek Schleicher wrote:
> Jimstone7 wrote at Thu, 27 Mar 2003 06:39:25 -0500:
>
> >  $data = "David (man from uncle)";
> >
> >  $data = "John Doe (The boy down the hall)";
> >
> >   What I want to do is split $data into two string variables, one holding the
> > $name, and the other holding all the $info that is within the parens. How
> > would I do this? Thanks for any help.
>
> I would use a regexp:
>
> my ($name, $info) = $data =~ /(.*?)\w+\((.*)\)/;

Hi Janek.

I'm afraid your regex is wrong! It does the following:

    capture zero or more (as few as possible) of any character
!!  match one or more 'word' characters followed by an open parenthesis
    capture zero or more (as many as possible) of any character
    match a close parenthesis

It will fail on the given data since the second match never succeeds.
The following will do the trick, splitting the string on either an open
or close parenthesis.

I hope this helps,

Rob


    while ( <DATA> ) {
        my ($name, $info) = split /[()]/;
        print "$name\n$info\n\n";
    }

    __DATA__
    David (man from uncle)
    John Doe (The boy down the hall)

output

    David
    man from uncle

    John Doe
    The boy down the hall




-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to