# Here's some random notes about perlbrew that I take when I was thinking (or not.)

* shell integration

bashrc / cshrc should check if ~/.perlbrew/init before sourcing it.
If ~/.perlbrew/init is missing, it is the same as perlbrew is not in effect.

* info command

    $ perlbrew info
    
    perlbrew version 0.30
        with bash integration
    
    PERLBREW_ROOT=...
    PERLBREW_HOME=...

    Disk Usage: 230MB

    $ perlbrew info perl-5.14.2

    perl version 5.14.2, installed at $PERLBREW_ROOT/perls/perl-5.14.2

    #Show the platform section of `perl -V`
    #Show the value of `Compiled at` from `perl -V`

* local::lib integration

  perlbrew users, who might not have permissions to write $PERLBREW_ROOT, should
  be able to use local::lib integration just fine.

  The command name of choice is `lib` (instead of something like `locallib` or
  `local-lib`, because I like it shorter.)

  Synopsis

    $ perlbrew use 5.14.2

    $ perlbrew lib create nobita shizuka
    lib 'perl-5.14.2@nobita' is created.
    lib 'perl-5.14.2@shizuka' is created.

    $ perlbrew lib create perl-5.14.1@nobita  perl-5.12.3@shizuka
    lib 'perl-5.14.1@nobita' is created.
    lib 'perl-5.12.3@shizuka' is created.

    $ perlbrew lib delete nobita 5.12.3@shizuka
    lib `perl-5.14.2@nobita` deleted
    lib `perl-5.12.3@shizuka` deleted

    $ perlbrew use perl-5.14.2@nobita
    $ cpan Acme::Bleach     # installs moduels to nobita
    $ cpan App::Ack         # installs executables to nobita

    $ perlbrew switch perl-5.14.2@shizuka
    $ cpan Acme::Bleach     # installs moduels to shizuka

    $ perlbrew use 5.14.2   # A local::lib-less base state.

Notice that you can give those libs the same name under different perl
installations, but that does not mean they are automatically related. The name
is merely a token for you to memorize for whatever you'll likely be installing
into it. You may named it after your project name for that's a good convention.

** Under

After doing this:

    $ perlbrew use 5.14.2
    $ perlbrew lib create nobita

A local::lib root is create at:

    $PERLBREW_HOME/libs/perl-5.14.2@nobita

After doing `perlbrew use 5.14.2@nobita` (or `switch`), env vars are altered to
have the same value as the output of:

    perl -Mlocal::lib=$PERLBREW_HOME/libs/perl-5.14.2@nobita

which should alter PERL_LOCAL_LIB_ROOT, PERL_MB_OPT, PERL_MM_OPT, PERL5LIB, and PATH.

The old value of PERL5LIB and PATH should be kept at the end of new value, like
what local::lib did.

* When it is installed with cpan
  - `which perlbrew` is, most likely, not equal to "$PERLBREW_ROOT/bin/perlbrew"
  - Directories and files under $PERLBREW_ROOT/* might be absent
  * as a result, user need to go through a initialization process. to get $PERLBREW_ROOT ready
    - why ? can it be built on-the go ?
    - etc/bashrc and etc/cshrc makes it harder
    - When people run `perlbrew` for the very first time, perform `init`
    - When people run `perlbrew install 5.14.2` the very first time, perform `init`

* When it is installed with the perlbrew installer

* Black box testing

  Suppose: A fresh bash user.
  scripts to test the stand-alone `perlbrew` behaviour
  scripts to test the cpan-installed `perlbrew` behaviour
