Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re^4: Filter objects?

by adrianh (Chancellor)
on Jan 30, 2003 at 17:26 UTC ( #231384=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Re: Filter objects?
in thread Filter objects?

I think it was just dragonchild mis-remembering the name of the design pattern - what you're after isn't a facade.

Filters/Pipelines are such a common idiom I have to believe that somebody has documented it as a design pattern somewhere... possibly in a PLoP proceeding. However, I don't have an academic library available to check :-)

I think there's a little confusion because the terms "filtering" and "pipelining" are more often used for applying a series of transformations to something - rather than a series of predicates that exclude objects. From your post I think you're after the latter.

A more concrete example of what you, in particular, are attempting would help. As somebody else already pointed out grep does what you want in simple cases.

If you need to build objects that can apply specific filters, something like this:

#! /usr/bin/perl package Sieve; use strict; use warnings; sub new { bless [], shift }; sub add_predicate { my $self = shift; push @$self, shift; } sub ok { my ($self, $item) = @_; $_->($item) || return(0) foreach @$self; return(1); }; sub sieve { my $self = shift; grep {$self->ok($_)} @_; };

allows you to do:

my $o = Sieve->new; $o->add_predicate( sub { $_[0] > 5 } ); $o->add_predicate( sub { $_[0] % 2 } ); my @original = (1..15); my @sieved = $o->sieve( @original ); print "original: @original\n"; print "odd numbers > 5 are: @sieved\n"; __END__ producing original: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 odd numbers > 5 are: 7 9 11 13 15

If you need more - you'll have to give up a bit more detail ;-)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://231384]
[ww]: (but pls don't s/senior/senile/ ... not yet
[karlgoethebier]: A bit more audience now: The Impact of Information Sources on Code Security Very interesting IMHO...
[karlgoethebier]:'s about copy & paste ;-)
[ww]: Wonder what IEEE would have thought w/survey based on PM/perl
[ww]: s/thought/found/
[erix]: that title is a broken* sentence, no? But maybe that's deliberate
[karlgoethebier]: ww:My first thought, to be honest...
[erix]: and those authors' names don't look like native english speakers. Then again, neither am I :)

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (11)
As of 2017-09-25 14:45 GMT
Find Nodes?
    Voting Booth?
    During the recent solar eclipse, I:

    Results (280 votes). Check out past polls.