六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 39|回复: 0

perl 实现查找内置 package

[复制链接]

升级  34.67%

26

主题

26

主题

26

主题

秀才

Rank: 2

积分
102
 楼主| 发表于 2013-2-4 12:58:31 | 显示全部楼层 |阅读模式
其实这个功能 perldoc 与 cpan 都有,只不过学习perl 想练练手。
程序的功能是实现使用 正则表达式 查找 perl 中的内置 package,然后输出匹配的结果;如输入参数为空,则提示无参数;如输入参数中含有  /all 则输出所有的 package。
代码如下:

#!/usr/bin/perluse strict;use utf8;use 5.010;use Data::Dumper;use Module::CoreList;use List::Util qw /first max/;sub checkArgs {my (@args) = @_;my $happy = first {/\/all/} @args;if($happy){@args = undef;}@args;}sub lengthstr {my (@args) = @_;foreach (@args){$_ = length $_;}@args;}my %modules = %{$Module::CoreList::version{5.014}};my $maxNum = max lengthstr keys %modules;foreach my $key (sort keys %modules){@ARGV = checkArgs @ARGV;if(!@ARGV){say "No arguments.";last;}chomp($key);chomp(my $value = $modules{$key});foreach my $temp (@ARGV){if($key =~ /(.*($temp).*)/){printf "%${maxNum}s\t%s\n", $key, $value;}}}#print Dumper(@ARGV); 使用时,运用如下方式;

./pModules.pl  [pattern] | all  可以输入若干个  pattern ,但只要有一个 /all ,则会输出所有的 package。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表