Raspbian环境运行Warcarrier时Perl模块GMAPS.pm查找失败问题
解决Perl找不到本地lib/GMAPS.pm的问题
这个问题我碰到过好几次,核心原因就是Perl的默认模块搜索路径@INC里没包含你项目里的本地lib目录——哪怕文件就在那儿,Perl也不知道去那儿找。给你几个实用的解决办法:
运行脚本时临时添加lib路径
直接用Perl的-I参数指定本地lib目录,比如你的主脚本是warcarrier.pl,运行命令改成:perl -I ./lib warcarrier.pl-I的作用就是把指定目录追加到Perl的模块搜索路径最前面,这样它就能找到lib/GMAPS.pm了。在脚本里永久添加lib路径
打开你要运行的Perl脚本,在所有use语句之前加上这一行:use lib './lib';这样每次运行脚本时,Perl都会自动把当前目录下的
lib文件夹加入搜索路径,不用每次手动加-I参数。修正模块引用语句
注意错误提示里写的是lib::GMAPS,但你的模块在lib/GMAPS.pm,所以脚本里引用模块的语句应该是:use GMAPS;而不是
use lib::GMAPS;——当lib目录被加入@INC后,Perl会直接在里面找GMAPS.pm文件,不需要加lib::前缀。进阶:适配任意运行目录
如果你经常从不同目录运行这个脚本,./lib可能会失效,这时候可以用FindBin模块来定位脚本所在的真实目录,然后关联lib文件夹:use FindBin qw($RealBin); use lib "$RealBin/lib";这样不管你在哪个路径下执行脚本,都能准确找到和脚本同目录的
lib文件夹。
内容的提问来源于stack exchange,提问作者Noah Smith
相关产品推荐
相关产品推荐

