Perl6:如何查找文件名与模式匹配的所有已安装模块?
发布时间:2020-12-16 06:25:37 所属栏目:大数据 来源:网络整理
导读:在Perl6中是否可以找到文件名与模式匹配的所有已安装模块? 在Perl5中,我会这样写: use File::Spec::Functions qw( catfile );my %installed;for my $dir ( @INC ) { my $glob_pattern = catfile $dir,'App','DBBrowser','DB','*.pm'; map { $installed{$_}
在Perl6中是否可以找到文件名与模式匹配的所有已安装模块?
在Perl5中,我会这样写: use File::Spec::Functions qw( catfile ); my %installed; for my $dir ( @INC ) { my $glob_pattern = catfile $dir,'App','DBBrowser','DB','*.pm'; map { $installed{$_}++ } glob $glob_pattern; } 解决方法
目前无法获取已安装模块的原始文件名.但是可以获取模块名称
sub list-installed { my @curs = $*REPO.repo-chain.grep(*.?prefix.?e); my @repo-dirs = @curs>>.prefix; my @dist-dirs = |@repo-dirs.map(*.child('dist')).grep(*.e); my @dist-files = |@dist-dirs.map(*.IO.dir.grep(*.IO.f).Slip); my $dists := gather for @dist-files -> $file { if try { Distribution.new( |%(from-json($file.IO.slurp)) ) } -> $dist { my $cur = @curs.first: {.prefix eq $file.parent.parent} take $_ for $dist.hash<provides>.keys; } } } .say for list-installed(); 见:Zef::Client.list-installed() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |