G'day mikkoi,
You'll find a lot of information about taint mode in perlsec. In particular, for your problem, look at the "Laundering and Detecting Tainted Data" section. Here's a version of the regex solution, shown in that section, for your specific problem:
$ cat ../lib/MyLib.pm package MyLib; our $VERSION = '1.23'; 1; $ perl -T -e 'use FindBin 1.51 qw( $RealBin ); use lib "$RealBin/../li +b"; use MyLib; print $MyLib::VERSION;' Insecure dependency in require while running with -T switch at -e line + 1. BEGIN failed--compilation aborted at -e line 1. $ perl -T -e 'use FindBin 1.51 qw( $RealBin ); use lib @{["$RealBin/.. +/lib" =~ /^([\$\w\/.]+)$/ && $1]}; use MyLib; print $MyLib::VERSION;' 1.23
Update (minor code improvement): Just after posting, I realised you don't actually need the ' && $1' part:
$ perl -T -e 'use FindBin 1.51 qw( $RealBin ); use lib @{["$RealBin/.. +/lib" =~ /^([\$\w\/.]+)$/]}; use MyLib; print $MyLib::VERSION;' 1.23
— Ken
In reply to Re: FindBin and Tainted
by kcott
in thread FindBin and Tainted
by mikkoi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |