当我得到错误信息时我需要哪个模块 "Can't locate getopts.pl in @INC..."
Which module do I need when I got error info "Can't locate getopts.pl in @INC..."
我在我的 macOS 中 运行 这个命令
$ perl ~/Desktop/blif2cnf.pl
并得到了这个错误信息:
Can't locate getopts.pl in @INC (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /Users/Frank/Desktop/blif2cnf.pl line 10.
在我的linux 16.04中,这样的问题可以通过以下this answer
来解决
在 macOS 中是否有类似 libperl4-corelibs-perl
的模块?
我知道CPAN,但我不知道应该安装哪个模块。
是Perl4::CoreLibs。一般来说,Debian 软件包 libthis-that-perl
对应一个名为 This::That
的模块,尽管由您决定大小写:)
我不确定包管理器如何与 macOS 一起工作,但是安装 getopts
包的平台独立方式。
要回答您作为对@hobbs 的回答的评论提出的问题,我搜索我需要的模块的方式是通过@hobbs link编辑的网站,https://metacpan.org, or, alternatively, http://search.cpan.org .就在那一刻,我找到了我需要的东西。
搜索 getopts.pl
得到 link 到 "Perl4::CoreLibs"。在右上角,有一个 link 表示 Perl4-CoreLibs-0.003.tar.gz (虽然现在看起来是 0.004)。我右键单击并选择 "copy link address",这给了我
http://search.cpan.org/CPAN/authors/id/Z/ZE/ZEFRAM/Perl4-CoreLibs-0.004.tar.gz
无论你的 link 是什么,你都需要解压它并找到 lib
目录中的所有 *.pl
文件到一个目录中,或者
1) Link 从命令行发送给他们,例如
perl -I /path/to/where/you/untarred/lib ~/Desktop/blif2cnf.pl
或
2) 将它们添加到您的 PERLLIB
环境变量中。
我认为更多细节会有所帮助。
详细说明
找出要下载 *.pl
文件的目录。我用了 $HOME/new_perl_stuff
cd ~
mkdir new_perl_stuff
cd new_perl_stuff
现在,获取 tarball
wget http://search.cpan.org/CPAN/authors/id/Z/ZE/ZEFRAM/Perl4-CoreLibs-0.004.tar.gz
解压,进入目录,确保lib
在那里
$ tar -xzf Perl4-CoreLibs-0.004.tar.gz
$ cd Perl4-CoreLibs-0.004
$ ls
您应该会在列表中看到 lib
。
可以将您新下载的 lib
目录(在我的例子中,$HOME/new_perl_stuff/Perl4-CoreLibs-0.004/lib
)添加到 perl
搜索路径,但这只会让我担心另一个目录,我可能会在某个时候删除。我在 /usr/lib
目录中创建了一个新文件夹。我决定将新目录命名为 libperl4-corelibs-perl
,因为这看起来很标准。首先,我检查以确保不存在具有该名称的目录。
$ stat /usr/lib/libperl4-corelibs-perl
stat: cannot stat '/usr/lib/libperl4-corelibs-perl': No such file or directory
然后我做了目录
mkdir /usr/lib/libperl4-corelibs-perl
下一步是将所有 *.pl
文件复制到此目录中。我希望稍后解释下一个命令。我 运行 这样做是为了确保我需要的所有文件都在那里。在我的 $HOME/new_perl_stuff/Perl4-CoreLibs-0.004
目录中,我 运行 下面的命令,我打算回来解释一下。
find ./lib -type f -name "*.pl" -print0 | xargs -I'{}' -0 \
bash -c 'new_dir=/usr/lib/libperl4-corelibs-perl/; chmod +x {}; \
echo "Moving {}"; mv {} ${new_dir} && echo -e "success\n" || \
echo -e "failure\n"' | tee moving_day.log
运行 如果您想看到所有内容都已成功复制,请执行此操作。执行所有必要操作的较短命令是:
find ./lib -type f -name "*.pl" -print0 | xargs -I'{}' -0 \
bash -c 'new_dir=/usr/lib/libperl4-corelibs-perl/; chmod +x {}; \
mv {} ${new_dir}'
运行
也不错
ls -lah /usr/lib/libperl4-corelibs-perl
检查 *.pl
个文件是否存在。
您现在可以运行
perl -I /usr/lib/libperl4-corelibs-perl ~/Desktop/blif2cnf.pl
但还有更简单的方法。
最后,我通过将以下行添加到 ~/.bashrc
中,使每次使用终端时该目录都成为 perl
搜索路径的一部分
此命令将路径添加到 PERLLIB
环境变量。不同风格的 Linux 有不同的添加到环境变量的语法,一定要弄清楚你的是什么!
export PERLLIB="/usr/bin/libperl4-corelibs-perl:$PERLLIB"
我 运行 为此的命令是
$ echo -e "\n\n## allow Perl to use the files in Perl4::CoreLibs" >> $HOME/.bashrc
$ echo -e "export PERLLIB=\"/usr/lib/libperl4_corelibs_perl:$PERLLIB\"" >> $HOME/.bashrc
$ source .bashrc
现在,您只需运行
perl ~/Desktop/blif2cnf.pl
注意:返回并删除不需要的额外内容可能是个好主意:
rm -rf $HOME/new_perl_stuff
我在我的 macOS 中 运行 这个命令
$ perl ~/Desktop/blif2cnf.pl
并得到了这个错误信息:
Can't locate getopts.pl in @INC (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /Users/Frank/Desktop/blif2cnf.pl line 10.
在我的linux 16.04中,这样的问题可以通过以下this answer
来解决在 macOS 中是否有类似 libperl4-corelibs-perl
的模块?
我知道CPAN,但我不知道应该安装哪个模块。
是Perl4::CoreLibs。一般来说,Debian 软件包 libthis-that-perl
对应一个名为 This::That
的模块,尽管由您决定大小写:)
我不确定包管理器如何与 macOS 一起工作,但是安装 getopts
包的平台独立方式。
要回答您作为对@hobbs 的回答的评论提出的问题,我搜索我需要的模块的方式是通过@hobbs link编辑的网站,https://metacpan.org, or, alternatively, http://search.cpan.org .就在那一刻,我找到了我需要的东西。
搜索 getopts.pl
得到 link 到 "Perl4::CoreLibs"。在右上角,有一个 link 表示 Perl4-CoreLibs-0.003.tar.gz (虽然现在看起来是 0.004)。我右键单击并选择 "copy link address",这给了我
http://search.cpan.org/CPAN/authors/id/Z/ZE/ZEFRAM/Perl4-CoreLibs-0.004.tar.gz
无论你的 link 是什么,你都需要解压它并找到 lib
目录中的所有 *.pl
文件到一个目录中,或者
1) Link 从命令行发送给他们,例如
perl -I /path/to/where/you/untarred/lib ~/Desktop/blif2cnf.pl
或
2) 将它们添加到您的 PERLLIB
环境变量中。
我认为更多细节会有所帮助。
详细说明
找出要下载 *.pl
文件的目录。我用了 $HOME/new_perl_stuff
cd ~
mkdir new_perl_stuff
cd new_perl_stuff
现在,获取 tarball
wget http://search.cpan.org/CPAN/authors/id/Z/ZE/ZEFRAM/Perl4-CoreLibs-0.004.tar.gz
解压,进入目录,确保lib
在那里
$ tar -xzf Perl4-CoreLibs-0.004.tar.gz
$ cd Perl4-CoreLibs-0.004
$ ls
您应该会在列表中看到 lib
。
可以将您新下载的 lib
目录(在我的例子中,$HOME/new_perl_stuff/Perl4-CoreLibs-0.004/lib
)添加到 perl
搜索路径,但这只会让我担心另一个目录,我可能会在某个时候删除。我在 /usr/lib
目录中创建了一个新文件夹。我决定将新目录命名为 libperl4-corelibs-perl
,因为这看起来很标准。首先,我检查以确保不存在具有该名称的目录。
$ stat /usr/lib/libperl4-corelibs-perl
stat: cannot stat '/usr/lib/libperl4-corelibs-perl': No such file or directory
然后我做了目录
mkdir /usr/lib/libperl4-corelibs-perl
下一步是将所有 *.pl
文件复制到此目录中。我希望稍后解释下一个命令。我 运行 这样做是为了确保我需要的所有文件都在那里。在我的 $HOME/new_perl_stuff/Perl4-CoreLibs-0.004
目录中,我 运行 下面的命令,我打算回来解释一下。
find ./lib -type f -name "*.pl" -print0 | xargs -I'{}' -0 \
bash -c 'new_dir=/usr/lib/libperl4-corelibs-perl/; chmod +x {}; \
echo "Moving {}"; mv {} ${new_dir} && echo -e "success\n" || \
echo -e "failure\n"' | tee moving_day.log
运行 如果您想看到所有内容都已成功复制,请执行此操作。执行所有必要操作的较短命令是:
find ./lib -type f -name "*.pl" -print0 | xargs -I'{}' -0 \
bash -c 'new_dir=/usr/lib/libperl4-corelibs-perl/; chmod +x {}; \
mv {} ${new_dir}'
运行
也不错ls -lah /usr/lib/libperl4-corelibs-perl
检查 *.pl
个文件是否存在。
您现在可以运行
perl -I /usr/lib/libperl4-corelibs-perl ~/Desktop/blif2cnf.pl
但还有更简单的方法。
最后,我通过将以下行添加到 ~/.bashrc
中,使每次使用终端时该目录都成为 perl
搜索路径的一部分
此命令将路径添加到 PERLLIB
环境变量。不同风格的 Linux 有不同的添加到环境变量的语法,一定要弄清楚你的是什么!
export PERLLIB="/usr/bin/libperl4-corelibs-perl:$PERLLIB"
我 运行 为此的命令是
$ echo -e "\n\n## allow Perl to use the files in Perl4::CoreLibs" >> $HOME/.bashrc
$ echo -e "export PERLLIB=\"/usr/lib/libperl4_corelibs_perl:$PERLLIB\"" >> $HOME/.bashrc
$ source .bashrc
现在,您只需运行
perl ~/Desktop/blif2cnf.pl
注意:返回并删除不需要的额外内容可能是个好主意:
rm -rf $HOME/new_perl_stuff