http://qs1969.pair.com?node_id=11129248

davidfilmer has asked for the wisdom of the Perl Monks concerning the following question:

Greetings, Masters. I am often annoyed that this code:

#!/usr/bin/perl print "Line [ ", __LINE__, " ] looks very nice\n"; print "Line [ __LINE__ ] is taken as a string-literal\n"; #print "Line [ @{[__LINE__}] is a syntax error\n";

produces this result:

Line [ 2 ] looks very nice. Line [ __LINE__ ] is taken as a string-literal.

The syntax of Line 2 works OK, but it is a lot of fanning-about that often makes me reluctant to include this useful bit of debugging information.

I would much prefer the syntax of Line 3, or some convenient token such as $LINE (or $__LINE__ or whatever I can just embed in double-quotes).

Line 4 is still a lot of fanning-about, but it doesn't even compile, even though this screwball syntax:

     print "The Time Is: [ @{[scalar(localtime)]} ] right now\n\n";

works just fine, without dropping out of the double-quotes:

     The Time Is: [ Sun Mar  7 00:14:15 2021 ] right now

Is there a better way to include the __LINE__ information without all this fanning-about?

Thanks for reading. I appreciate any help to beautify my ugly code.

- David