Net::IDN::Nameprep - A Stringprep Profile for Internationalized Domain Names (RFC 3491)


  use Net::IDN::Nameprep;
  $output = nameprep $input;


This module implements the nameprep specification, which describes how to prepare internationalized domain name (IDN) labels in order to increase the likelihood that name input and name comparison work in ways that make sense for typical users throughout the world. Nameprep is a profile of the stringprep protocol and is used as part of a suite of on-the-wire protocols for internationalizing the Domain Name System (DNS).


This module implements a single function, nameprep, which is exported by default.

nameprep( $input [, AllowUnassigned => 1 ] )

Processes $input according to the nameprep specification and returns the result.

If $input contains characters not allowed for nameprep, it throws an exception (so use eval if necessary).

This function takes the following optional parameter:


(boolean) If set to a false value, unassigned code points in $input are not allowed.

False MUST be used for stored strings.

True MAY be used for queries.

The default is true (backwards compatibility).


Claus Färber <>

Previous versions written by Tatsuhiko Miyagawa <>


Copyright 2007-2015 Claus Färber.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Unicode::Stringprep, RFC 3491 (