Author image Алексей Капранов
and 2 contributors


Text::Hyphen - determine positions for hyphens inside words


This module implements Knuth-Liang algorithm to find positions inside words where it is possible to insert hyphens to break a line.

The original Knuth patterns for English language are built-in. If you need to hyphenate other languages, please see Text::Hyphen::* modules on CPAN.

    use Text::Hyphen;

    my $hyphenator = new Text::Hyphen;

    print $hyp->hyphenate('representation', '-');
    # prints rep-re-sen-ta-tion

    print map "($_)", $hyp->hyphenate('multiple');
    # prints "(mul)(ti)(ple)"


This version does not export anything and uses OOP interface.



Creates the hyphenator object.

You can pass several options:


Minimum length of word to be hyphenated. Shorter words are returned right away. Defaults to 5 for English.


Minimal prefix to leave without any hyphens. Defaults to 2 for English.


Minimal suffix to leave wothout any hyphens. Defaults to 2 for English.

hyphenate($word, [$delim])

Hyphenates the $word.

If $delim is undefined then in list context this method will break the word into pieces on hyphenation positions and return the list of the pieces. In scalar context it will return the $word with "-" inserted into suggested hyphenation positions.

If $delim is defined this methods returns the $word with $delim inserted into hyphenation positions.

Basically, it tries to DWIM.


Alex Kapranoff, <kappa at>


This code is hoste don Github, please see

Please report any bugs or feature requests to GitHub issues.

You can also look for information at:


Donald Knuth and Frank Liang for the algorithm.

Alexander Lebedev for all his valuable work on russian ispell dictionaries and russian hyphenation patterns. See his archive at

Mark-Jason Dominus and Jan Pazdziora for Text::Hyphenate and TeX::Hyphenate modules on CPAN.

Ned Batchelder for his public domain Python implementation of Knuth-Liang algorithm available at


Copyright 2008-2015 Alex Kapranoff.

This is free software; you can redistribute it and/or modify it under the terms of the BSD License.