Come for the quick hacks, stay for the epiphanies. | |
PerlMonks |
Re: running unknown methodsby elusion (Curate) |
on Oct 03, 2002 at 23:29 UTC ( [id://202667]=note: print w/replies, xml ) | Need Help?? |
I'm a little confused as to what you are asking. I can tell that you're getting that error because you have the :: after your dereferenced hashref though. Do you want to call all the defined methods that begin with a "_" from the class of your object? I believe you would do that like so:
The first thing I changed was the foreach. The hash you were getting the keys from was the object itself. If I understand you correctly, you want the symbol table for the class/package, which is what I put. (ref will return the object's class) If, on the other hand, you have stored all the methods you want to call inside of your object, take out the %{"${ref}::"} and replace it with %{$self} Second, I moved the tests to the front. There's no need to assign something if you're not gonna use it. I also changed your regex. This makes sure that it's testing after the last :: in case you have a subclass like My::Module. Lastly, I didn't assign via a typoglob (*). Instead, I saved the method name from the regex and executed it as a method of the originating object. You were calling it as a subroutine, which, if I understand you right, you didn't want to do. I hope I understood you correctly and that this helps. All of this code is untested however, so I can't guarentee that it works. elusion : http://matt.diephouse.com Update: I forgot to mention that if you're trying to do this and your object inherits from another class, you won't have access to the parent class's methods, because those are stored in the parent's namespace. Update: I had to change the symbol table hashref. I don't dabble in the symbol table too much, sorry.
In Section
Seekers of Perl Wisdom
|
|