in reply to Re^2: Possible to change package of code reference?
in thread Possible to change package of code reference?

I was able to accomplish what I needed to by noodling out Lanx's suggestion.

Ok, but note LanX's warning, which I agree with - B::Deparse is more of a debugging tool, and does not guarantee to be able to round-trip Perl code, so your solution will be quite brittle. Using a regex to replace the package name will blow up on something as simple as:

package Spin::Command::spin; our $foo = "Bar"; sub func { print "Foo:$foo"; }

Because the deparse of func is:

{ package Spin::Command::spin; print "Foo:$foo"; }

If, as you seem to be saying here, you really just want to replace run and don't need other replacements, then my suggestion, even though it's still kind of a hack, is much more robust (relative to it being a hack, at least).

Replies are listed 'Best First'.
Re^4: Possible to change package of code reference?
by nysus (Parson) on Oct 22, 2018 at 10:03 UTC