Hi,
This is not recommended but if you just try,
it might be very helpful.
use Inline C => << 'EOC';
OP *my_pp_subst(pTHX)
{
dMARK; dAX;
OP *op;
SV *sv;
STRLEN len;
char *str;
sv = PL_op->op_flags & OPf_STACKED ? ST(0) : DEFSV;
op = Perl_pp_subst(aTHX);
/* to make it to be dualvar */
str = SvPV(sv, len);
SvUPGRADE(ST(0), SVt_PVIV);
sv_setpvn(ST(0), str, len);
SvIOK_on(ST(0));
return op;
}
void initialize()
{
printf("hey\n");
PL_ppaddr[OP_SUBST] = MEMBER_TO_FPTR(my_pp_subst);
}
EOC
use strict;
BEGIN { initialize() }
my $pkg = "foo::bar::baz";
require $pkg =~ s,::,/,g . '.pm';
On Wednesday 05 May 2004 12:13 am, [EMAIL PROTECTED] wrote:
> my $package = 'Foo::Bar::Baz';
> require TRANSFORM[ s,::,/,g, "$package.pm" ];
> $package->foobar();
>
> where TRANSFORM[] stands for an expression in which an "s-expression"
> (i.e. one using s///) is applied to a string, and the resulting string
> is returned as the result.
--
SH
[EMAIL PROTECTED]