-[[ ! -v PERL_LOCAL_LIB_ROOT && -v commands[perl] &&
- -d $XDG_DATA_HOME/perl5/lib/perl5 ]] &&
- eval $(perl -I$XDG_DATA_HOME/perl5/lib/perl5 \
- -Mlocal::lib=$XDG_DATA_HOME/perl5 2>/dev/null)
-
+if [[ ! -v PERL_LOCAL_LIB_ROOT && -v commands[perl] ]] {
+ _p5=${XDG_DATA_HOME:-~/.local/share}/perl5
+ [[ -d $_p5 ]] || mkdir -p $_p5
+ if [[ -f $_p5/lib/perl5/local/lib.pm ]] {
+ eval $(perl -I$_p5/lib/perl5 -Mlocal::lib=$_p5 2>/dev/null)
+ } else {
+ # emulate local::lib if not installed
+ path=($_p5/bin "${path[@]}")
+ export \
+ PERL_MB_OPT="--install_base '$_p5'" \
+ PERL_MM_OPT=INSTALL_BASE=$_p5 \
+ PERL5LIB=$_p5/lib/perl5 \
+ PERL_LOCAL_LIB_ROOT=$_p5${$PERL_LOCAL_LIB_ROOT:+:$PERL_LOCAL_LIB_ROOT}
+ }
+ unset _p5
+}