Re: [MacPerl] $PREMATCH Question

[email protected] (Ronald J Kimball) Wed, 3 Feb 2016 12:55:24 -0500
Newsgroups perl.macperl
Message-ID <[email protected]>
On Tue, Feb 02, 2016 at 08:59:44PM -0500, Jonathan Levi via macperl wrote:
> Can someone explain why the following:
> 
> echo alphabet | perl -e '$_=<STDIN>; if (m/pha/){print $PREMATCH, "\n"}'
> 
> yields "" instead of "al", as I expected?
> 
> Jonathan

If you want the long name, you need to use the English module, as
mentioned near the top of perlvar <http://perldoc.perl.org/perlvar.html>.
For example:

echo alphabet | perl -MEnglish -e '$_=<STDIN>; if (m/pha/){print $PREMATCH, "\n"}'

Using /p and ${^PREMATCH}, as Matthew suggested, will avoid performance
penalties in longer scripts, however.

Ronald