in reply to Term::ANSIColor is awesome, but.. (need help)

Separate the program logic and the output.

Within your program, always keep $name eq 'Jon', and have a routine, output_name(), which does

print colored($name,'red');

or a function visual_name, which returns the value, ready for printing as name:

sub visual_name { my( $name )= @_; colored( $name, 'red' ); };

Replies are listed 'Best First'.
Re^2: Ter::ANSIColor is awesome, but.. (need help)
by mascip (Pilgrim) on Mar 30, 2014 at 13:49 UTC

    Thank you Corion.
    That makes sense, but it doesn't exactly solve my problem. I don't want to make this change in every part of the code where I'm displaying something.

    I guess, most of my print statements are in the same file in fact, apart from exceptions. (Edit: In fact I just realized that I would really like these exceptions to be colourized...)

    I'll try this tomorrow. But I'm still wondering if there is a better way...

      The starting point of my reasoning is:

      There is only one place where I declare the variables that I want to colorize. If I could colorize them then and nowhere else, that would be much simpler.

        You will need to split up the two uses of $name, for internal program logic and for display.