The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Text::InHTML - Display plain text in HTML


  use Text::InHTML;
  my $html = Text::InHTML::encode_plain($plain_text_text);
  my $syntax_higlighted_diff = Text::InHTML::encode_diff($plain_text_diff);


In its simplest form it turns a plain text string into HTML that when rendered retains its whitespace without pre tags or pre-like css. Also HTML is encoded so no HTML is rendered like it would be with pre tags. Useful for displaying source code or a text file on a web page exactly as-is.

More advanced useage includes syntax highlighting.


None by default.

Any encode_* is exportable

The tag :common does: encode_plain encode_whitespace encode_perl encode_diff encode_html encode_css encode_sql encode_mysql encode_xml encode_dtd encode_xslt encode_xmlschema



Returns an HTML and whitespace encoded version of $plain_text_string


$tabs is the number of spaces a tab should be considered to be, default is 4

    encode_plain($plain_text_string, $tabs);


Mostly a utility function, returns whitespace encoded version of $string


$tabs is the number of spaces a tab should be considered to be, default is 4

    encode_whitespace($plain_text_string, $tabs);

encode_perl, encode_diff, encode_*

You can call Text::InHTML::encode_whatever(), where "whatever" is a "format" as listed under "Processing text" at Syntax::Highlight::Universal

Note: if the format has a dash, like "html-css" then you need to call it with an underscore in place of each - like so:


and it will return HTML that is syntax highlighted (what Syntax::Highlight::Universal does) *and* retains whitespace (what Syntax::Highlight::Universal does not do)

    my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string); 

    my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string, $syntax);
    my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string, $syntax, $tabs);    

    my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string, undef, $tabs);

    my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string, {}, $tabs);

$tabs is the number of spaces a tab should be considered to be, default is 4

If Syntax::Highlight::Universal is installed, it calls Syntax::Highlight::Universal's highlight method with the given format, othersise it simply does encode_plain()

Additionally $syntax can be a hashref which gives you fine grained control over the Syntax::Highlight::Universal object.

Its keys and values are as follows:


HTML::Entities, Syntax::Highlight::Universal


  • Wrap the whole thing in a div that's monospace styled and source code will look real nice!

  • You'll need to use CSS to color in the highlighted syntax. The Syntax::Highlight::Universal bundle has some samples and info on how to generate that CSS.


Function(s) to facilitate javascript highlighters like google's syntax highlighter framework.


Daniel Muey,


Copyright (C) 2006 by Daniel Muey

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.