Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Class Browser for Perl

by saragwyn (Novice)
on Oct 22, 2008 at 23:57 UTC ( #718906=perlquestion: print w/replies, xml ) Need Help??

saragwyn has asked for the wisdom of the Perl Monks concerning the following question:

Hi all -

I've been Googling myself silly trying to find an IDE or other tool that allows one to navigate up and down a class hierarchy for a Perl project (for Linux).

The only thing we have found is Perly-Sense, which is an Emacs plug in and not as GUI friendly as we would like. That plug in does allow one to jump to base class methods overridden in the child class and lists the parents of a derived class.

Apps that have 'Code Browsing' do not necessarily support this feature (such as Komodo or Eclipse with EPIC).

I have consulted the spreadsheet on Perl tools that is posted on Perl Monks, but it does not call out that feature specifically.

Thanks
-Sara S

Replies are listed 'Best First'.
Re: Class Browser for Perl
by ggvaidya (Pilgrim) on Oct 23, 2008 at 07:43 UTC

    If no existing tools have that feature, you could try something like Padre, which have this feature in their TODO list. I don't think it's done yet, but maybe you could help/encourage them to work on that feature next?

    Parsing Perl files located in subdirectories of a particular directory might be fairly straightforward (with the caveat that only perl can parse Perl): you can find Perl files using File::Find, and then parse them with adamk's excellent PPI. Visualizing it and plugging it into Padre will be the (only!) hard bits.

      Your help in adding such capabilities to Padre is surely welcome!
Re: Class Browser for Perl
by Anonymous Monk on Oct 23, 2008 at 00:24 UTC
      I had actually perused the thread referred to in the last post, and it mainly contains references to visualization tools and not code editing/browsing tools.

      -SGS

        Another dependency-list tool - and not really a gui - is scandeps.pl from Module::ScanDeps, which is used in PAR-Packer.
        For example I use

        scandeps.pl $(perldoc -l CGI)

        on my commandline to find CGI module-dependencies and perldoc -m CGI to list contents of a module, here CGI.

Re: Class Browser for Perl
by wokka (Acolyte) on Oct 23, 2008 at 15:17 UTC
    My guess is that you can get some of what you want with Exhuberant Ctags. I use the Exhuberant Ctags plugin for vim, and it displays a very readable structured view. A project I discovered called "inheritanCe" attempts to leverage this for what it sounds like you want. It might not be as IDE-y as you want, but it's a start.

    Ctags: http://ctags.sourceforge.net/
    inheritanCe: http://www.suckfuell.net/jochen/software.html#inheritance
      Has anyone used Perl::Tags with vim? Does it provide class browsing?
      Sara
Re: Class Browser for Perl
by Lawliet (Curate) on Oct 23, 2008 at 01:02 UTC
    "I've been Googling myself silly"

    Sounds dirty D:

    I'm so adjective, I verb nouns!

    chomp; # nom nom nom

Re: Class Browser for Perl
by vasundhar (Acolyte) on Oct 23, 2008 at 18:39 UTC
    Hi Sara, Check anjuta Search on source forge Perl Padre is new baby.
Re: Class Browser for Perl
by Anonymous Monk on Oct 24, 2008 at 21:54 UTC
    For inspecting module subs and class methods, I use Class::Inspector in a script like so:
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Class::Inspector;
    use English qw( -no_match_vars );
    
    for my $class_name ( @ARGV ) {
        chomp $class_name;
        print "$class_name:\n";
        eval {
            eval "require $class_name";
        };
        if ( $EVAL_ERROR ) {
            print "Unable to load class $class_name! ($EVAL_ERROR)\n";
            next;
        }
    
        my $method_names_ref = Class::Inspector->methods( $class_name, 'full' );
        if ( !defined $method_names_ref ) {
            print "No methods for class $class_name!\n";
            next;
        }
    
        my @method_names = @{ $method_names_ref };
        for my $method_name ( sort @method_names ) {
            print "\t$method_name\n";
        }
    }
    

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://718906]
Approved by GrandFather
Front-paged by Tanktalus
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2023-11-28 12:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?