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/