Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • perl -MOur::Controller -MSub::Identify=stash_name -le'print stash_name(Our::Controller->can("method"))'

    ? Of course, that doesn't help with finding its super-methods, and if it does funny classless things then you'd need to instantiate an object. (Pause for a moment to hate the fact that perl parses

    stash_name Our::Controller->can(...)

    as a call to

    Our::Controller->stash_name

    ... wretched indirect object syntax.)

    • Actually, I use my Sub::Information [cpan.org] as it groups the info I need about subs in one spot. That being said, I typically don't reach for it as a first resort. I see a method or sub and I have the code open in my editor and I look for it. I only use tricky code when I'm really stuck because manually looking for code gives me a greater understanding of the overall code base. That's when I saw our lovely diamond inheritance which itself has diamonds further down :(

  • PerlySense says (widen your browser window. no even more!):

    * Inheritance *
      +------------------------------------------------------------------------------- ------------------------------------+
      |    +------------------------------------------------------------------------------- ---+                           |
      |    |  [ Class::Accessor               

  • I thought Catalyst used NEXT for inheritance. Is that no longer the case?
    • Yes, they do, but not all of our code does. However, MI is still a bad and fragile thing. It frequently introduces inappropriate compositions because it's a seductively easy (read: bad lazy) way of sharing behavior.

      • I agree. I was wondering if NEXT would make it better or worse.
      • The plan, it seems, is to eventually rewrite Catalyst with Moose. (Originally the plan was to use C3 instead of NEXT, but that work was never completely finished.)

        • Yes, that is correct. I am currently working on that project and we are making decent progress, which you may see as a branch of 5.8 on the repo. One of the goals of this project is to eliminate unnecessary instances of MI (C::A::F, C::D::I) in the Catalyst core, and replace most instances of MI with roles. C3 will work fine with Moose (according to people who know better than I do) and so we will be using C3 and a compatibility layer for NEXT to minimize instances of broken legacy code.