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]

Reply via email to