Using a DEBUG constant and assigning its value via an environment variable are 
both common, but has a drawback and would not be my choice of approach. I 
prefer to use a lexical var (with file scope) and assign it via command line 
option. 

Let's assume you have multiple scripts using the DEBUG constant where some (or 
possibly all) are run from cron jobs. If you set the debug mode based on an 
environment variable, then that could/would affect the running of all of the 
scripts, which you may or may not want. If you set the debug mode based on 
command line option(s), then you could be much more selective not only one 
which script(s) have debug enabled, but also (optionally) the level of 
verbosity. 

#!/usr/bin/perl 

use 5.010; 
use warnings; 
use strict; 
use Getopt::Long; 

my $DEBUG = 0; 
my $VERBOSE = 0; 

GetOptions( 
'D' => \$DEBUG, 
'v=i' => \$VERBOSE 
); 

if( $DEBUG ){ 
say 'hello'; 
say 'goodbye' if $VERBOSE > 1; 
} 

Ron 

From: "Sharanbasappa Raghapur, ERS, HCLTech" <shar...@hcl.com> 
To: "Perl Beginners" <beginners@perl.org> 
Sent: Tuesday, July 7, 2015 4:40:35 AM 
Subject: Debugging and passing constant value at run time 



Hi, 



I am using constant mainly to enable printing of debugging messages (e.g. use 
constant DEBUGGING_L1 => 0;) 

Normally, the value is ‘0’ and when I need to see debug messages, I make this 1 
and run the script. 



Is there a way to allocate value to constants at run time so that I can avoid 
editing the script again and again? 

Also, is there a better way to handle debugging? 



Regards, 

Sharan 




::DISCLAIMER:: 
----------------------------------------------------------------------------------------------------------------------------------------------------
 

The contents of this e-mail and any attachment(s) are confidential and intended 
for the named recipient(s) only. 
E-mail transmission is not guaranteed to be secure or error-free as information 
could be intercepted, corrupted, 
lost, destroyed, arrive late or incomplete, or may contain viruses in 
transmission. The e mail and its contents 
(with or without referred errors) shall therefore not attach any liability on 
the originator or HCL or its affiliates. 
Views or opinions, if any, presented in this email are solely those of the 
author and may not necessarily reflect the 
views or opinions of HCL or its affiliates. Any form of reproduction, 
dissemination, copying, disclosure, modification, 
distribution and / or publication of this message without the prior written 
consent of authorized representative of 
HCL is strictly prohibited. If you have received this email in error please 
delete it and notify the sender immediately. 
Before opening any email and/or attachments, please check them for viruses and 
other defects. 

----------------------------------------------------------------------------------------------------------------------------------------------------
 

Reply via email to