やっぱりenvdirしたかったので、作りかけだったのをちゃんと実装した。
俺得モジュールです。
- github https://github.com/ysasaki/p5-envdir
- CPAN http://p3rl.org/EnvDir (そのうち見れると思う)
使い方
use strict;
use warnings;
# environment from /path/to/envdir/*
use EnvDir -autoload => '/path/to/envdir', -clean;
-clean
を付けると本家のenvdir同様に%ENVをクリア(PATHのみは/bin:/usr/binになる)して、指定したdirのファイルから%ENV
に色々セットします。
envdir
をimportするか、OOスタイルで使うとガードオブジェクトが返ってきてスコープを抜けると元の%ENV
に戻る
use strict;
use warnings;
# import envdir function
use EnvDir 'envdir', -clean;
# Function style
{
my $guard = envdir('/path/to/envdir');
...
}
# OO style
my $envdir = EnvDir->new( clean => 1 );
{
my $guard = $envdir->envdir('/path/to/envdir');
...
}
envdir.pl
コマンドを添付しているので本家envdirと同じようにも使える
> envdir.pl ./env sh -c 'echo $PATH'