NAME Devel::Local - Use development code in place SYNOPSIS From the command line: > devel-local dir/path # Add dir/path/lib to PERL5LIB # and dir/path/bin to PATH > devel-local file/path # Apply a Devel::Local config file > devel-local . # Add current dir's lib/ and bin/ > devel-local ../* # Add all your source repos at once! > devel-local ~ # Apply ~/.perl-devel-local config file > devel-local ? # Pretty print $PERL5LIB and $PATH > devel-local ! # Reset $PERL5LIB and $PATH to original > devel-local # Default action (pretty print) Using this command line tool is the simplest way to do it, but TMTOWTDI. See USAGE for more ways. DESCRIPTION Sometimes when you are developing Perl software there can several Perl module code repositories involved. This module lets you specify which repositories you want to load Perl modules from, and formats them into a PERL5LIB environment variable format. Devel::Local takes a list of Perl module repositories that you specify in your current directory or your home directory. It adds the lib/ subdirectories to the current value of PERL5LIB, and it also adds the bin/ subdirectories to your PATH environment variable. You can use absolute paths, relative paths and even type-globs. In addition to keeping a list of paths in specially named files, you can request a specific list file or name specific paths containing lib and bin dirs. Devel::Local always converts the paths to absolute forms, so switching directories should not break the behavior. Finally, Devel::Local can reset the PERL5LIB and PATH variables to their original state. USAGE As was pointed out in the SYNOPSIS above, there are several ways to invoke Devel::Local. The handiest way to use Devel::Local is to add this line to your .bashrc: source `which devel-local.sh` Then you'll have the "devel-local" Bash function to set up your environment whenever you need to: > devel-local [optional-arguments] If you don't use Bash for your shell, use an option below or considering contacting me to add support for your shell. The explicit way to use Devel::Local from the command line is thus: export PERL5LIB=`$PERL -MDevel::Local=PERL5LIB -e1 ` export PATH=`$PERL -MDevel::Local=PATH -e1 ` This is actually what the "devel-local" script does internally. Finally you can use Devel::Local from inside your code like thus: use Devel::Local ; This will modify $ENV{PERL5LIB} and $ENV{PATH} appropriately. For each of the above forms there are different arguments you can specify: Devel::Local config files If you don't give "use Devel::Local" any arguments it will search for one of these files: ./devel-local ./.devel-local ~/.perl-devel-local that has lines like this: # Use the GitHub versions of these: . ~/src/yaml-libyaml-pm/ ~/src/catalyst-* You can also put a file of the above format anywhere, and just specify its path. $PERL_DEVEL_LOCAL You may also use any other config file path you wish, by setting the "PERL_DEVEL_LOCAL" environment variable. NOTE: Devel::Local will ignore all the lines in these config files after the first blank line. This way, you can put several groupings of devel libraries in one file. Just make sure that the grouping you want to use is at the top of the file. XS AND BLIB You can use Devel::Local with modules that are not pure Perl. In other words, modules that get compiled before installing. If Devel::Local sees a ".xs" file anywhere in the dist, it will add "blib/" to the "PERL5LIB" after . It is up to you to run "make" after changing your .xs code, so that the changes get added to your "blib/". DISPLAY $PATH AND $PERL5LIB Whenever you use the "devel-local" bash function, it will pretty print the values. If you just want to see the values listed without modifying them, do this: > devel-local ? TURNING Devel::Local OFF Devel::Local puts a special delimiter, '|', in the PATH variables, so that it can later remove the things it added. You can trigger this by passing it a single argument of '!'. > devel::local # Add stuff to $PATH and $PERL5LIB > devel::local path/foo path/bar-* # Add more stuff > devel::local ! # Reset to original values SEE ALSO * File::Share * ylib * local::lib AUTHOR Ingy döt Net COPYRIGHT AND LICENSE Copyright (c) 2011. Ingy döt Net. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html POD ERRORS Hey! The above document had some coding errors, which are explained below: Around line 110: You forgot a '=back' before '=head1'