NAME

ful - a useful "find upper lib" pragma that ascends dirs to include module directories in @INC.

SYNOPSIS

One line to rule them all.

use ful;

Within a-script.pl when your project looks like this:

project-root/
├── bin/
│   └── utils/
│       └── a-script.pl
├── lib/
├── vendor/
│   └── SomeOrg/
│       └── Some/
│           └── Module.pm

And that's it.

And if you need more than just the project-root/lib dir, you can do this:

use ful qw/vendor lib/;

Instead of:

use lib::relative '../../lib';
use lib::relative '../../vendor';
# or
use FindBin;
use lib "$FindBin::Bin/../lib";
use lib "$FindBin::Bin/../vendor";
# or even
BEGIN {
    use Path::Tiny;
    my $base = path(__FILE__)->parent;
    $base = $base->parent until -d "$base/lib" or $base->is_rootdir;
    unshift @INC, "$base/lib", "$base/vendor";
}

VERSION

0.06

SUPPORT

Support is by the author. Please file bug reports or ask questions at https://github.com/ryan-willis/p5-Acme-ful/issues.