http://www.perlmonks.org?node_id=1014448


in reply to Re^3: Module for Printing Line Numbers in Debug?
in thread Module for Printing Line Numbers in Debug?

Devel::Trace might do it, but it's not installed on the system. Might be problematic to get it on there. (Ubuntu apt-get name?)

I don't need to trace all the lines, but if that's necessary, I can live with it.

I can already put a function or statement wherever I want, so a log() function would do the same, but would be a lot shorter than the literal statement. A good idea, I was hoping for something even cleaner, that won't show up in production code by mistake.

-QM
--
Quantum Mechanics: The dreams stuff is made of

Replies are listed 'Best First'.
Re^5: Module for Printing Line Numbers in Debug?
by LanX (Saint) on Jan 21, 2013 at 14:45 UTC
    > A good idea, I was hoping for something even cleaner, that won't show up in production code by mistake.

    It doesn't look like you will pass any arguments to log(), caller seems to provide anything you are looking for.

    If you later check for production environment and set

    sub log {}
    then it will be optimized and not appear in the opcodes.

    If you are still worried, use a name you can easily find and delete, like __LOG__, even a source filter doing this should be very safe.¹

    But please search the archives for older discussions, this is certainly not the first one.

    Cheers Rolf

    UPDATE

    ¹) or even better, use Damian's approach from Smart::Comments and use a source filter only in testing mode to enable log() by deleting the '#' with s/;#LOG/;LOG;/g

    s/a/b/ ;#LOG