我在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,但我不知道应该安装哪个模块。
答案 0 :(得分:3)
这是Perl4::CoreLibs。一般来说,Debian包libthis-that-perl
对应于一个名为This::That
的模块,尽管由你来计算大小写:)
答案 1 :(得分:2)
我不确定软件包管理器如何使用macOS,而是一种独立于平台的安装getopts
软件包的方式。
为了回答你对@hobbs的回答作出评论的问题,我搜索我需要的模块的方式是通过@hobbs链接的网站https://metacpan.org,或者http://search.cpan.org。 3}}。我第二次找到了我需要的东西。
搜索getopts.pl
提供了“Perl4 :: CoreLibs”的链接。在右上角,有一个链接说Perl4-CoreLibs-0.003.tar.gz(虽然看起来现在有0.004)。我右键单击并选择了“复制链接地址”,这给了我
http://search.cpan.org/CPAN/authors/id/Z/ZE/ZEFRAM/Perl4-CoreLibs-0.004.tar.gz
无论您的链接是什么,您都需要解压缩并找到*.pl
目录中的所有lib
个文件到目录中,并且
1)从命令行链接到它们,例如
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
但是有一种更简单的方法。
最后,我这样做,以便每次使用终端时,通过将以下行添加到perl
,此目录将成为~/.bashrc
搜索路径的一部分
此命令将添加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