Net::LDAP::Filter3pm
Representation of ldap filters
Usage
use Net::LDAP::Filter;$filter = Net::LDAP::Filter->new( $filter_str );
Overview
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
notoperator, 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 / itemand = "&" filterlistor = "|" filterlistnot = "!" filterfilterlist = 1*filteritem = simple / present / substring / extensiblesimple = attr filtertype valuefiltertype = equal / approx / greater / lessequal = "="approx = "~="greater = ">="less = "<="extensible = attr [":dn"] [":" matchingrule] ":=" value/ [":dn"] ":" matchingrule ":=" valuepresent = attr "=*"substring = attr "=" [initial] any [final]initial = valueany = "*" *(value "*")final = valueattr = AttributeDescription from Section 4.1.4 of RFC 4511matchingrule = MatchingRuleId from Section 4.1.8 of RFC 4511value = AttributeValue from Section 4.1.5 of RFC 4511Special Character encodings---------------------------* \2a, \*( \28, \() \29, \)\ \5c, \\NUL \00
Acknowledgements
This document is based on a document originally written by Russell Fulton <[email protected]>.
Releases
14 releases since Debian 2.2 (Potato); the text changed 10 times.