其實這個功能 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([email protected]){
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。