<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7654.12">
<TITLE>RE: [tpm] why wouldn't violating "use warnings" always be fatal?</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>I've encountered something like this before.<BR>
The obvious but not likely: different module versions<BR>
<BR>
And the often overlooked: Code running inside an if (server is dev){...}<BR>
<BR>
If you have chunks of code running in dev only check them.<BR>
<BR>
Some development houses get around this by having a dev server.<BR>
a staging server that runs the full code but off a different datastore<BR>
and a live server.<BR>
<BR>
The staging server tests the code as it would run in the live environment.<BR>
<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: toronto-pm on behalf of Indy Singh<BR>
Sent: Tue 8/26/2014 4:12 PM<BR>
To: Fulko Hew; toronto-pm@pm.org<BR>
Subject: Re: [tpm] why wouldn't violating "use warnings" always be fatal?<BR>
<BR>
Maybe it is a timing issue.  It may be running more slowly on the production system and when you run it with the debugger.<BR>
<BR>
You get the error when you run it with the debugger, but what happens if you start it with the debugger but place no breakpoints in the code?<BR>
<BR>
Perhaps you can reproduce the error message with some sleep statements placed at the same spots as where you stopped with the debugger.<BR>
<BR>
Indy Singh<BR>
IndigoSTAR Software -- www.indigostar.com<BR>
<BR>
From: Fulko Hew<BR>
Sent: Friday, August 22, 2014 2:32 PM<BR>
To: toronto-pm@pm.org<BR>
Subject: [tpm] why wouldn't violating "use warnings" always be fatal?<BR>
<BR>
<BR>
I just got bitten by different behavior on different platforms,<BR>
and I can't justify it. Perhaps someone out there can?<BR>
<BR>
Platform #1: Perl 5.8.8 on Fedora    (development system)<BR>
Platform #2: Perl 5.8.8 on Debian    (production system)<BR>
<BR>
It turns out my application _did_ have a bug in it, but it wasn't<BR>
detected during my testing when run on the dev sys, but failed<BR>
when the same dataset was encountered on the production system.<BR>
<BR>
a) I have 'use strict' and 'use warnings' in my app.<BR>
b) I had an uninitialized variable used in a print statement.<BR>
<BR>
On the production machine... my app died with the error:<BR>
'Use of uninitialized value in concatenation'<BR>
just as you would expect.<BR>
<BR>
But on my dev sys, the app doesn't die, or even complain!<BR>
<BR>
Once I found out what was happening, I ran it under the debugger on my dev sys,<BR>
and when I stepped through the print statement... It bitches and dies.<BR>
But without the debugger,  all is (apparently) happy.<BR>
(That's why I didn't detect and fix the bug during testing.)<BR>
<BR>
So...<BR>
Why would my dev sys only flag and die under the debugger (and not with a normal run)?<BR>
And why does my prod system, work correctly (ie. flag and die) ?<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
--------------------------------------------------------------------------------<BR>
_______________________________________________<BR>
toronto-pm mailing list<BR>
toronto-pm@pm.org<BR>
<A HREF="http://mail.pm.org/mailman/listinfo/toronto-pm">http://mail.pm.org/mailman/listinfo/toronto-pm</A><BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>