Saya memiliki fungsi untuk mencari array objek untuk nilai yang cocok menggunakan operator eq, seperti:
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;
}
....
Saya juga ingin dapat meneruskan variabel yang dikutip qr untuk digunakan dalam perbandingan, tetapi satu-satunya cara yang dapat saya pikirkan untuk memisahkan perbandingan adalah menggunakan blok if/else, seperti:
if (lc ref($params{whatever}) eq 'regexp') {
#use =~
} else {
#use eq
}
Apakah ada cara yang lebih singkat untuk melakukannya? Karena alasan di luar kendali saya, saya menggunakan Perl 5.8.8 jadi saya tidak bisa menggunakan operator pencocokan pintar.
TIA