# Net::LDAP::Filter - phpMan

## NAME
    [Net::LDAP::Filter] - representation of LDAP filters

## SYNOPSIS
      use [Net::LDAP::Filter];

      $filter = [Net::LDAP::Filter]->new( $filter_str );

## DESCRIPTION
    The [Net::LDAP::Filter] object lets you directly manipulate LDAP filters
    without worrying about the string representation and all the associated
    escaping mechanisms.

## CONSTRUCTOR
    new ( [ FILTER ] )
        Create a new object. If FILTER is given, parse it.

## METHODS
    parse ( FILTER )
        Parse FILTER, updating the object to represent it.

    as_string
        Return the filter in text form.

    print ( [ FH ] )
        Print the text representation of the filter to FH, or the currently
        selected output handle if FH is not given.

    negate ( )
        Logically negate/invert the filter object so that it matches the
        opposite set of entries as the original.

        Instead of simply negating the text form by surrounding it with the
        not operator, the negation is done by recursively applying *De
        Morgan's law*.

        Here is an example:

         (|(&(cn=A)(cn=B))(|(!(cn=C))(cn=D)))

        gets negated to

         (&(|(!(cn=A))(!(cn=B)))(&(cn=C)(!(cn=D))))

## FILTER SYNTAX
    Below is the syntax for a filter given in RFC 4515
    <http://www.ietf.org/rfc/rfc4515.txt>

     filter       = "(" filtercomp ")"
     filtercomp   = and / or / not / item
     and          = "&" filterlist
     or           = "|" filterlist
     not          = "!" filter
     filterlist   = 1*filter
     item         = simple / present / substring / extensible
     simple       = attr filtertype value
     filtertype   = equal / approx / greater / less
     equal        = "="
     approx       = "~="
     greater      = ">="
     less         = "<="
     extensible   = attr [":dn"] [":" matchingrule] ":=" value
                    / [":dn"] ":" matchingrule ":=" value
     present      = attr "=*"
     substring    = attr "=" [initial] any [final]
     initial      = value
     any          = "*" *(value "*")
     final        = value
     attr         = AttributeDescription from Section 4.1.4 of RFC 4511
     matchingrule = MatchingRuleId from Section 4.1.8 of RFC 4511
     value        = AttributeValue from Section 4.1.5 of RFC 4511


     Special Character encodings
     ---------------------------
        *               \2a, \*
        (               \28, \(
        )               \29, \)
        \               \5c, \\
        NUL             \00

## SEE ALSO
    [Net::LDAP], Other online documentation

## ACKNOWLEDGEMENTS
    This document is based on a document originally written by Russell
    Fulton <<r.fulton@auckland.ac.nz>>.

## AUTHOR
    Graham Barr <<gbarr@pobox.com>>

    Please report any bugs, or post any suggestions, to the perl-ldap
    mailing list <<perl-ldap@perl.org>>.

## COPYRIGHT
    Copyright (c) 1997-2004 Graham Barr. All rights reserved. This program
    is free software; you can redistribute it and/or modify it under the
    same terms as Perl itself.

