---
name: "Net::LDAP::Schema"
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::Schema"
---

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

Load and manipulate an LDAP v3 Schema

## NAME

Net::LDAP::Schema - Load and manipulate an LDAP v3 Schema

## SYNOPSIS

```
 use Net::LDAP;
 use Net::LDAP::Schema;
 #
 # Read schema from server
 #
 $ldap = Net::LDAP->new ( $server );
 $ldap->bind ( );
 $schema = $ldap->schema ( );
 #
 # Load from LDIF
 #
 $schema = Net::LDAP::Schema->new;
 $schema->parse ( "schema.ldif" ) or die $schema->error;
```

## DESCRIPTION

`"Net::LDAP::Schema"` provides a means to load an LDAP schema and query it for information regarding supported objectclasses, attributes and syntaxes.

## METHODS

Where a method is stated as taking the 'name or OID' of a schema item (which may be an object class, attribute or syntax) then a case-insensitive name or raw OID (object identifier, in dotted numeric string form, e.g. 2.5.4.0) may be supplied.

Each returned item of schema (e.g. an attribute definition) is returned in a HASH. The keys in the returned HASH are lowercase versions of the keys read from the server. Here's a partial list (not all HASHes define all keys) although note that RFC 4512 permits other keys as well:

```
 name
 desc
 obsolete
 sup
 equality
 ordering
 substr
 syntax
 single-value
 collective
 no-user-modification
 usage
 abstract
 structural
 auxiliary
 must
 may
 applies
 aux
 not
 oc
 form
```

- all\_attributes ( )

  - all\_ditcontentrules ( )

  - all\_ditstructurerules ( )

  - all\_matchingrules ( )

  - all\_matchingruleuses ( )

  - all\_nameforms ( )

  - all\_objectclasses ( )

  - all\_syntaxes ( )

  Returns a list of all the requested types in the schema.

- attribute ( NAME )

  - ditcontentrule ( NAME )

  - ditstructurerule ( NAME )

  - matchingrule ( NAME )

  - matchingruleuse ( NAME )

  - nameform ( NAME )

  - objectclass ( NAME )

  - syntax ( NAME )

  Returns a reference to a hash, or `"undef"` if the schema item does not exist. `"NAME"` can be a name or an OID.

  ```
   $attr_href = $schema->attribute( "attrname" );
  ```

- dump ( )

  Dump the raw schema information to standard out.

- dump ( FILENAME )

  Dump the raw schema information to a file.

  ```
   $result = $schema->dump ( "./schema.dump" );
  ```

  If no schema data is returned from directory server, the method will return undefined.  Otherwise a value of 1 is always returned.

- error ( )

  Returns the last error encountered when parsing the schema.

- may ( OBJECTCLASS )

  Given an argument which is the name or OID of a known object class, returns a list of HASHes describing the attributes which are optional in the class.

  ```
    @may = $schema->may ( $oc );
    # First optional attr has the name '$may[0]->{name}'
  ```

- must ( OBJECTCLASS )

  Given an argument which is the name or OID of a known object class, returns a list of HASHes describing the attributes which are mandatory in the class.

  ```
    @must = $schema->must ( $oc );
  ```

- parse ( MESG )

  - parse ( ENTRY )

  - parse ( FILENAME )

  Takes a single argument which can be any of, a message object returned from an LDAP search, a `"Net::LDAP::Entry"` object or the name of a file containing an LDIF form of the schema.

  If the argument is a message result from a search, `"Net::LDAP::Schema"` will parse the schema from the first entry returned.

  Returns true on success and `"undef"` on error.

- superclass ( NAME )

  Given an argument which is the name or OID of a known objectclass, returns the list of names of the immediate superclasses.

- attribute\_syntax ( NAME )

  Given an attribute name, return the actual syntax taking into account attribute supertypes.

- matchingrule\_for\_attribute ( NAME, RULE )

  Given an attribute name and a matching rule (`"equality"`, `"substr"`, etc), return the actual rule taking into account attribute supertypes.

## SEE ALSO

Net::LDAP, Net::LDAP::RFC

## AUTHORS

Graham Barr \<gbarr@pobox.com\> John Berthels \<jjb@nexor.co.uk\>

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

## COPYRIGHT

Copyright (c) 1998-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.
