模块名称匹配
Module name matching
我有一个模块名称列表,作为 Str
s,从 META6.json
中提取。具体来说,depends
数组。这包含以下条目:
"Config::Parser::toml:ver<1.0.1+>",
"Config:api<1>:ver<1.3.5+>",
"Dist::Helper:ver<0.21.0+>",
"Hash::Merge",
"Terminal::Getpass:ver<0.0.5+>",
如何才能最好地匹配各个条目?执行 eq
字符串匹配不够具体,因为 Config
不会匹配 Config:api<1>:ver<1.3.5+>
作为字符串。尝试使用 .starts-with
进行匹配也无法正常工作,因为 Config:ver<1.3.5>
无法匹配 Config:api<1>:ver<1.3.5>
.
use Zef::Distribution::DependencySpecification;
my $spec-ver-all = Zef::Distribution::DependencySpecification.new("Foo::Bar");
my $spec-ver-zero = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<0>");
my $spec-ver-one = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<1>");
my $spec-ver-oneplus = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<1+>");
my $spec-ver-two = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<2>");
my $spec-ver-three = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<3>");
say $spec-ver-one.spec-matcher($spec-ver-all); # True
say $spec-ver-one.spec-matcher($spec-ver-two); # False
say $spec-ver-zero.spec-matcher($spec-ver-oneplus); # False
say $spec-ver-oneplus.spec-matcher($spec-ver-oneplus); # True
say $spec-ver-three.spec-matcher($spec-ver-oneplus); # True
我有一个模块名称列表,作为 Str
s,从 META6.json
中提取。具体来说,depends
数组。这包含以下条目:
"Config::Parser::toml:ver<1.0.1+>",
"Config:api<1>:ver<1.3.5+>",
"Dist::Helper:ver<0.21.0+>",
"Hash::Merge",
"Terminal::Getpass:ver<0.0.5+>",
如何才能最好地匹配各个条目?执行 eq
字符串匹配不够具体,因为 Config
不会匹配 Config:api<1>:ver<1.3.5+>
作为字符串。尝试使用 .starts-with
进行匹配也无法正常工作,因为 Config:ver<1.3.5>
无法匹配 Config:api<1>:ver<1.3.5>
.
use Zef::Distribution::DependencySpecification;
my $spec-ver-all = Zef::Distribution::DependencySpecification.new("Foo::Bar");
my $spec-ver-zero = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<0>");
my $spec-ver-one = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<1>");
my $spec-ver-oneplus = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<1+>");
my $spec-ver-two = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<2>");
my $spec-ver-three = Zef::Distribution::DependencySpecification.new("Foo::Bar:ver<3>");
say $spec-ver-one.spec-matcher($spec-ver-all); # True
say $spec-ver-one.spec-matcher($spec-ver-two); # False
say $spec-ver-zero.spec-matcher($spec-ver-oneplus); # False
say $spec-ver-oneplus.spec-matcher($spec-ver-oneplus); # True
say $spec-ver-three.spec-matcher($spec-ver-oneplus); # True