list grep

nekokak on 2006-11-01T09:21:11

I want to extract only the value that exists in another array by the value of a certain array. It cannot be done in List::MoreUtils. And I wrote such.

package List::Grep;
use strict;
use warnings;
use base 'Exporter';
use vars qw(@EXPORT_OK %EXPORT_TAGS);
@EXPORT_OK = qw/list_grep/;

sub list_grep { my $args = shift; my %tmp; @tmp{@{$args->{base}}} = @{$args->{base}}; return wantarray ? @tmp{@{$args->{grep_key}}} : [@tmp{@{$args->{grep_key}}}]; }

1; __END__

=head1 SYNOPSIS

use List::Grep qw/list_grep/; my @hoge = qw/1 2 3 4 5 5/; my @moge = qw/2 5/;

my @result = list_grep({base => \@hoge,grep_key => \@moge});

## 2,5 in @result

=head1 THANKS TO

tokuhirom


more idea?

PS.

http://rafb.net/paste/results/UdqEr958.html Thanks to hio_d and #catalyst-ja's member.