Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re: Generating complex LDAP queries with Perl

by jwkrahn (Monsignor)
on Jul 17, 2009 at 21:41 UTC ( #781183=note: print w/replies, xml ) Need Help??

in reply to Generating complex LDAP queries with Perl

while (my $cond = shift) { $filter = "($op $filter $cond)" if defined $cond; }

The while conditional will exit the loop if $cond is false or undefined so the subsequent test for defined is redundant, $cond will not be undefined inside the loop.   Note that if $cond also contains "0" or "" it will exit the loop.

Replies are listed 'Best First'.
Re^2: Generating complex LDAP queries with Perl
by grinder (Bishop) on Jul 18, 2009 at 09:34 UTC

    Just to situate the historical context, I added the if defined $cond much later on in the piece, when I added the IGNORE() function to change an AND() or an OR() into a no-op.

    The idea was to ensure that "valid1", "valid2", undef, "valid3" produces a syntactically correct query, without a fourth half-baked conditional creeping in there.

    But you know what? You're absolutely correct. Given the above and the following:

    sub _joiner { my $op = shift; my $filter = shift; while (my $cond = shift) { $filter = "($op $filter $cond)"; } return $filter; } my $filter = AND( "(a=1)", IGNORE( "(b=1)", "(b=2)", ), "(c=1)", );

    It does indeed produce (& (a=1) (c=1)). Thank-you very much for this insight, I appreciate it.

    • another intruder with the mooring in the heart of the Perl

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://781183]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2021-12-04 21:58 GMT
Find Nodes?
    Voting Booth?
    R or B?

    Results (30 votes). Check out past polls.