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
_______________________________________________
Houston mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/houston
Website: http://houston.pm.org/

Reply via email to