View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Ondřej Vostal > Debug > Debug::Message



Annotate this POD

View/Report Bugs
Module Version: 1.00   Source  


Debug::Message - Eases the use of debug print with level, indentation and color.


    use Debug::Message;
    use Log::Dispatch;
    use Log::Dispatch::Screen;

    my $dispatcher = Log::Dispatch->new;
    $dispatcher->add( Log::Dispatch::Screen->new( name => 'screen',
                                                  min_level => '0' ));

    my $info = Debug::Message->new(1);
    $info->printcn("error message", 'bold red');

    my $critical = Debug::Message->new(5);

For disabling the debugging simply do not attach any dispatchers.

    $critical->disable;  # Will detach the attached backend


There was no module for simple debug messages supporting debug/verbosity levels and indentation. So this is the one, that is supposed to take this place.

This module is an art of frontend to Log::Dispatch as Log::Dispatch itself supports levels, but no colors and the function's calling is tedious.

There are some methods defined. Each outputs a different color, optionally it can add a newline after the messaage. They dispatch the messages to all added dispatchers, but generaly only one will be needed as the Log::Dispatch itself can have more backends.


In theory the use is simple. You have to create some Debug::Message objects. Each of these with different importance level. You connect them to the same Log::Dispatch.

Then you set the min_level of Log::Dispatch according to the command line or what ever. Only those messages, wich have enough high level (larger or equal to the Log::Dispatche's one) are outputed. For more complicated scenarios refer to Log::Dispatch(3).


   use Debug::Message;
   my $debug = Debug::Message->new( $importance );

Will constuct and return new instance of Debug::Message with importance level set to $importance. The level is a number in range from 0 to 7.

Output functions

print( $message, ... );

printc( $message, ..., $colorspecs );

COLOR( $message, ... );

FUNCTIONn( $mssage, ... );

All functions output is effected by the indentation level. The print() function will output an uncolored string. The COLOR fuctions output a colorizes string. The COLOR can be one of blue, magenta, yellow, red, green. The FUNCTIONn (printn, yellown, etc.) add a trailing newline to the messgage. And finaly the printc() function colorizes its message according to $colorspecs.


Is a string to send to connected dispatcher modules (Log::Dispatch(3)).


Is color according to Term::ANSIColor(3) man page.

Properties functions

add_dispatcher( $dispatcher );

Adds an output module to the object.


This is the Log::Dispatch(3) object to connect to.


Unsets the dispatcher thus disables the debugging. Returns the former dispatcher.

Indentation level TODO, BUT WORKING

level( $level );

Assigns a level $level and returns a new value. If $level is omited nothing is set and the old value is returned

inc( $number );

Increases level by $number. If $number is omited the function behaves as if it was one. The new level value is returned.

dec( $number );

Decreases level by $number. If $number is omited the function behaves as if it was one. The new value of level is returned.



The best experience is to copy the initial setup from the synopsis. It saves a lot of writing. Or from here; the more complicated one.

    ### Set-up debuggung facilities
    use Debug::Message;
    use Log::Dispatch;
    use Log::Dispatch::Screen;

    our $Verbosity_Level = '0';
    my $dispatcher = Log::Dispatch->new;
    $dispatcher->add( Log::Dispatch::Screen->new( name => 'screen',
                                                  min_level => $Verbosity_Level ));
    my $info = Debug::Message->new(2);
    my $data = Debug::Message->new(0);
    my $warning = Debug::Message->new(4);



No known. The new found please report on <>



Some of the ideas evolved: Colors insted of semantics in function names. Initial release 0.51.


Continued writing after a long pause. Rewritten much of the code.


I began writing with many nice ideals on mind.

syntax highlighting: