[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