http://www.perlmonks.org?node_id=168901


in reply to (wil) Re: regex: extract a substring
in thread regex: extract a substring

Do keep in mind that wil's example will make foo equal to the characters between abc and xyz. i.e. $foo == "hello" if you are trying to extract to another variable you need to do something more like this.
$foo = "abchelloxyz"; $foo =~ /abc([\w]+)xyz/; $bar = $1;

the value of $foo is unchanged. ---Mogaka is good

Replies are listed 'Best First'.
Re3: regex: extract a substring
by Hofmator (Curate) on May 24, 2002 at 17:07 UTC
    $foo =~ /abc([\w]+)xyz/; $bar = $1;

    or in one line:

    ($bar) = /abc([\w]+)xyz/;

    From perlop:

    If the /g option is not used, m// in a list context returns a list consisting of the subexpressions matched by the parentheses in the pattern, i.e., ($1, $2, $3...). (Note that here $1 etc. are also set, and that this differs from Perl 4's behavior.) When there are no parentheses in the pattern, the return value is the list (1) for success. With or without parentheses, an empty list is returned upon failure.

    -- Hofmator

Re: Re: (wil) Re: regex: extract a substring
by insensate (Hermit) on May 23, 2002 at 23:12 UTC
    en passant:
    $foo='abchelloxyz'; ($bar=$foo)=~s/abc(\w+)xyz/\1/;