`
forever8tf
  • 浏览: 96681 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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  [pattern] | all 
 可以输入若干个  pattern ,但只要有一个 /all ,则会输出所有的 package。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics