note
JayBonci
So I'll take a stab at this, and maybe I'm missing what you're asking. <br><br>
If you bless in a regular expression, it becomes a SCALAR, and as far as I can tell, there's no way to come up with the direct reference of it again, without putting it into regular expression context, like you have (but the only way I can see to do that is to actually use it). Then perl's internal magic kicks in, and blammo, it works.
<br><br>
However, this code below, works to determine whether a blessed thingy is a regexp:
<code>
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
my $rex = qr/[A-Z]o[A-Z]/;
my $bar = \$rex;
#my $blessed = bless qr/[A-Z]o[A-Z]/,'foo';
my $blessed = bless $bar, 'foo';
$\="\n";
$,=":\t";
print "Rex ",ref $rex;
print "Bless",ref $blessed;
print "Rex ",$rex,"WoW"=~$rex ? "WoW" : "---";
print "Bless",$blessed,"WoW"=~$$blessed ? "WoW" : "---";
print "Rex ",$rex,"wow"=~$rex ? "!WoW" : "---";
print "Bless",$blessed,"wow"=~$$blessed ? "!WoW" : "---";
print "Rex ",Dumper($rex);
print "Bless",Dumper($blessed);
print "Blessed bar", ref $$blessed;
</code>
lends me back:
<code>
Rex : Regexp
Bless: foo
Rex : (?-xism:[A-Z]o[A-Z]): WoW
Bless: foo=SCALAR(0x80fd428): WoW
Rex : (?-xism:[A-Z]o[A-Z]): ---
Bless: foo=SCALAR(0x80fd428): ---
Rex : $VAR1 = qr/(?-xism:[A-Z]o[A-Z])/;
Bless: $VAR1 = bless( do{\(my $o = qr/(?-xism:[A-Z]o[A-Z])/)}, 'foo' );
Blessed bar: Regexp
</code>
<br><br>
So you can work around it, by blessing references to references in, thus making the internal reference type of 'ref' and then maybe you don't have that layer of blessed magic-ness to work around. Is it because there is no way to put a scalar in regexp context without actually running it?
<br><br>
--[JayBonci|jb]
161902
161902