我想知道 CPAN 是否有允许用户搜索 CPAN.org 上所有可用模块的功能。
我可能只是写一些东西来发送获取请求并吐回答案......只是想知道是否已经有一个内置的实用程序......这真的很棒。
我喜欢在 debian 或 ubuntu linux 中,有“apt-cache search”或“aptitude search”这个东西,它可以告诉你哪些软件包已经安装,哪些软件包可能对你的系统可用。如果 perl 模块/CPAN 有这样的东西,那将是一件非常棒的事情。
您可以交互地运行 Perl 的 CPAN 模块:
# perl -MCPAN -e shell
Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v1.9800)
Enter 'h' for help.
cpan[1]> i /JSON::XS/
Reading '/home/alt/.cpan/Metadata'
Database was generated on Wed, 06 Mar 2013 23:07:32 GMT
Module < Catalyst::Action::Deserialize::JSON::XS (BOBTFISH/Catalyst-Action-REST-1.06.tar.gz)
Module < Catalyst::Action::Serialize::JSON::XS (BOBTFISH/Catalyst-Action-REST-1.06.tar.gz)
Module < JSON::XS (MLEHMANN/JSON-XS-2.33.tar.gz)
Module < JSON::XS::Boolean (MLEHMANN/JSON-XS-2.33.tar.gz)
Module < JSON::XS::VersionOneAndTwo (LBROCARD/JSON-XS-VersionOneAndTwo-0.31.tar.gz)
Module < Mojo::JSON::XS (YSYROTA/Mojo-JSON-Any-0.990104.tar.gz)
Module < Mojo::JSON::XS::_Bool (VTI/Mojo-JSON-Any-0.990103.tar.gz)
Module < Sledge::Plugin::JSON::XS (TOKUHIROM/Sledge-Plugin-JSON-XS-0.05.tar.gz)
8 items found
还有cpan
可能在您的路径中的脚本。所以,而不是打字
perl -MCPAN -eshell
你可以输入
cpan
这会让你进入 CPAN shell。
然后,在CPAN>
提示符下键入i /ModuleName/
以搜索模块。真正好的是让 cpan 脚本处理i /ModuleName/
但现在,只有 -L 可用,它列出了特定模块作者的模块。
在我看来,进入 cpan shell 并不是真正的“从命令行”。
我需要能够将 cpan 的输出通过管道传输到其他外部命令(grep/awk/sed/etc)
为此,此语法有效
echo 'm /keyword/' | cpan
例子:
-sh-4.2$ echo 'm /SFTP/' | cpan | grep Recursive
Module < Net::SFTP::Recursive (GEOTIGER/Net-SFTP-Recursive-0.12.tar.gz)
or
-sh-4.2$ echo 'm /SFTP.*Recursive/' | cpan
cpan shell -- CPAN exploration and modules installation (v1.9800)
Enter 'h' for help.
cpan[1]> Reading '/home/myuser/.cpan/Metadata'
Database was generated on Thu, 14 Oct 2021 17:17:03 GMT
Module id = Net::SFTP::Recursive
CPAN_USERID GEOTIGER (Geo Tiger <tiger.geo@gmail.com>)
CPAN_VERSION undef
CPAN_FILE G/GE/GEOTIGER/Net-SFTP-Recursive-0.12.tar.gz
INST_FILE (not installed)
cpan[2]> Lockfile removed.
当然,创建一个脚本来做到这一点很容易
cat << EOF > cpancmd
#!/bin/ksh
echo "\$*" | cpan
EOF
chmod 755 cpancmd
./cpancmd m /SFTP/ | grep Recursive
或者使用更具体的脚本或别名来定位子命令“i”或“m”等。