hotnet 发表于 2017-5-17 11:30:47

perl 实现查找内置 package

  其实这个功能 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 | all
 可以输入若干个  pattern ,但只要有一个 /all ,则会输出所有的 package。
页: [1]
查看完整版本: perl 实现查找内置 package