【发布时间】:2010-05-14 01:04:42
【问题描述】:
我有一个函数可以使用 eq 运算符在对象数组中搜索匹配值,如下所示:
sub find {
my ( $self, %params ) = @_;
my @entries = @{ $self->{_entries} };
if ( $params{filename} ) {
@entries = grep { $_->filename eq $params{filename} } @entries;
}
if ( $params{date} ) {
@entries = grep { $_->date eq $params{date} } @entries;
}
if ( $params{title} ) {
@entries = grep { $_->title eq $params{title} } @entries;
}
....
我还希望能够传入一个 qr 引用变量以在比较中使用,但我能想到分离比较的唯一方法是使用 if/else 块,如下所示:
if (lc ref($params{whatever}) eq 'regexp') {
#use =~
} else {
#use eq
}
有没有更短的方法?由于我无法控制的原因,我使用的是 Perl 5.8.8,所以我不能使用智能匹配运算符。
TIA
【问题讨论】:
标签: perl search arrays comparison operators