我有一個函數使用當量操作者來搜索對象的一個匹配的值的陣列,像這樣的匹配可能多個值:搜索對象陣列,用於使用不同的比較運算符
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
+1給我介紹一個新的模塊,我可能只需要在$ work上安裝。 – Ether 2010-05-14 02:53:52
現在我知道匹配::智能。哈哈哈。 – darch 2010-05-14 02:58:28