---
name: "Net::LDAP::Filter"
section: "3pm"
platform: "linux"
package: "perl-ldap"
version: "0.68-8"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Net::LDAP::Filter"
---

# Net::LDAP::Filter(3pm)

representation of LDAP filters

## 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.
