【发布时间】:2013-06-01 14:18:46
【问题描述】:
我有以下代码。如果没有附加的 CPAN 模块,isSubset 可以写得更简单吗?
my @possibleNames = ("adam", "chelsea");
my @actualNames = ("adam", "chucky", "chelsea");
sub isSubset {
my ($littleSet, $bigSet) = @_;
foreach (@{$littleSet}) {
return 0 unless ($_ ~~ @{$bigSet});
}
return 1;
}
printf("%s\n", (isSubset(\@possibleNames, \@actualNames) ? "yes" : "no"));
【问题讨论】:
-
只是
use Array::Utils。没有理由不能使用 CPAN 中的模块。 -
my ($sub, super) = @_; $_ ~~ $super or return 0 for @$sub; 1,但这只是化妆品。如果集合很大,或者如果您反复测试一组,最好使用散列:$_ ~~ $super变为exists $super->{$_}。不过,仅适用于字符串。 -
如果您不想将模块拉下来,请获取源代码并在应有的地方使用它。
-
智能匹配 perl 运算符现在在 perl 5.18 中是实验性的,因此您会在此环境中收到警告。
标签: perl