[pm-h] Using Moose Attributes In Regular Expressions - Question Regarding Magic ${\( ... )}

Robert Stone drzigman at drzigman.com
Tue Aug 23 12:02:21 PDT 2016


Greetings,

I find myself needing to use the value of a Moose Attribute in a regular
expression every now and then.  Typically I accomplish this via (warning
that all examples are very contrived and may contain bugs):

*Sample Using Variable Assignment First*

my $value = $my_moose_object->attribute;
if( $some_value =~ m/\Q$value/ ) {

Needless to say this isn't the most efficient/easiest to work with.  Given
that fact, I've come across a way of using Moose Attributes directly in
regular expressions:

*MyObject*

package MyObject;

use Moose;

has foo => ( is => 'ro', isa => 'Str' );

...;

*Script That Consumes MyObject*

my $object = MyObject->new( foo => 'Value' );
if( $some_value =~ m/\Q${\( $object->foo )}\E/ ) {


This works, but frankly I'm not entirely certain why.  From the
documentation at http://perldoc.perl.org/perlre.html#Regular-Expressions I
have:

\Q          quote (disable) pattern metacharacters until \E
\E          end either case modification or quoted section, think vi

Great, that makes sense.

But what magic is the ${\( ... )} doing here?  I'd be most grateful if
anyone had some insight and could share it with us!

Best Regards,
Robert Stone
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/houston/attachments/20160823/8bf6f65b/attachment.html>


More information about the Houston mailing list