Как отмечает Дейв Шерохман , FindBin предназначен для поиска местоположения основного скрипта, а не отдельных модулей.Из документации:
NAME
FindBin - Locate directory of original perl script
(по общему признанию, документация, несколько запутанно, ссылается на «модули» в разделе «ИЗВЕСТНЫЕ ПРОБЛЕМЫ»), но на самом деле это не означает, что вы подразумеваете под этим.)
В любом случае, если вы посмотрите на источник с perldoc -m FindBin
, вы увидите, что FindBin получает путь к сценарию из переменной $0
.Если вы заинтересованы в поиске местоположения модуля, включенного через use
(или require
), вам следует поискать под %INC
, что-то вроде этого:
package Foo::Bar;
use File::Spec;
my ($vol, $dir, $file) = File::Spec->splitpath( $INC{'Foo/Bar.pm'} );