String::ToIdentifier::EN(3) Convert Strings to English Program Identifiers


use utf8;
use String::ToIdentifier::EN 'to_identifier';
to_identifier 'foo-bar'; # fooDashBar
to_identifier 'foo-bar', '_'; # foo_dash_bar
to_identifier '', '_'; # foo_dot_bar
to_identifier "foo\x{4EB0}bar"; # fooJingBar
to_identifier "foo\x00bar"; # fooNullCharBar
to_identifier "foo\x00\x00bar"; # foo2NullCharsBar
to_identifier "foo\x00\x00bar", '_'; # foo_2_null_chars_bar
no utf8;
to_identifier "foo\xFF\xFFbar.baz"; # foo_2_0xFF_BarDotBaz
to_identifier "foo\xFF\xFFbar.baz", '_'; # foo_2_0xFF_bar_dot_baz


This module provides a utility method, ``to_identifier'' for converting an arbitrary string into a readable representation using the ASCII subset of "\w" for use as an identifier in a computer program. The intent is to make unique identifier names from which the content of the original string can be easily inferred by a human just by reading the identifier.

If you need the full set of "\w" including Unicode, see the subclass String::ToIdentifier::EN::Unicode.

Currently, this process is one way only, and will likely remain this way.

The default is to create camelCase identifiers, or you may pass in a separator char of your choice such as "_".

Binary char groups will be separated by "_" even in camelCase identifiers to make them easier to read, e.g.: "foo_2_0xFF_Bar".


Optionally exports the ``to_identifier'' function.



Takes the string to be converted to an identifier, and optionally a separator char such as "_". If a separator char is not provided, a camelCase identifier will be returned.



The class method version of ``to_identifier'', if you want to use the object oriented interface.


Rafael Kitover, "<[email protected]>"


Please report any bugs or feature requests to "bug-string-toidentifier-en at", or through the web interface at <>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


More information on this module is available at:


Copyright (c) 2011 Rafael Kitover <[email protected]>.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See for more information.