其实这个功能 perldoc 与 cpan 都有,只不过学习perl 想练练手。
程序的功能是实现使用 正则表达式 查找 perl 中的内置 package,然后输出匹配的结果;如输入参数为空,则提示无参数;如输入参数中含有 /all 则输出所有的 package。
代码如下:
#!/usr/bin/perl use 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。