天天看點

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([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。

繼續閱讀