# from Michael G Schwern
# on Monday 26 February 2007 09:20 pm:

>>breaking broken code is easier than
>> accounting for ignorance with the unfortunate side-effect that the
>> user learns something.  The ignorance goes away and balance is
>> restored.
>
>Again, you're assuming the "user" here to be the author of the naughty
> code in question.  Or that you can write code which knows what's
> naughty and what's intended.  I say that most of the time such
> vigilante coding will only bother 3rd parties who use your vigilante
> module in conjunction with someone else's code.  

There's nothing vigilante about writing code that assumes other code 
will behave properly.  If I were going to put something on CPAN that 
messed with __DIE__ hooks, it would only be an audit module.  I'm 
certainly not going to put delete($SIG{__DIE__}) at the beginning of 
every module either (take a joke -- it saves typing.)  I will, however, 
refuse to say "local $SIG{__DIE__}" inside of every eval just because 
"*maybe* *somebody* did *something* wrong *somewhere*."  The user has 
every right to shoot themselves in the foot however they see fit.

> Your CPAN module is 
> going to break other CPAN modules and the poor sap using them who
> didn't write any of it is going to have no idea why.

You're placing the blame in the wrong place.  Modules which rely on a 
poorly-implemented $SIG{__DIE__} are going to break anyway.  I'm just 
saying we should all leave the slack in the rope and not walk on 
eggshells.  If the "poor sap" (though I tend to give Perl programmers 
more credit than that) wants to send me an e-mail questioning why I 
would be so bold as to use eval, I'll happily diagnose the problem and 
send them in the right direction.

--Eric
-- 
"Insert random misquote here"
---------------------------------------------------
    http://scratchcomputing.com
---------------------------------------------------

Reply via email to