demerphq wrote:
> On 12/5/06, Ken Williams <[EMAIL PROTECTED]> wrote:
>> On Dec 4, 2006, at 12:35 PM, Julian Mehnle wrote:
>>
>>> Is it likely that this occurs with CPANTS in the first place?
>>> Unfortuna-
>>> tely, CPANTS doesn't tell the Data::Dumper version it is using... :-(
>> I looked at the three failure reports you referenced, and seeing as 2
>> of them come from the same person, perhaps we could ask imacat what
>> version is installed?  I just used 'svn annotate' to go *way* back in
>> the sources for M::B and I confirmed that we've been using "Terse"
>> dumping since this feature was introduced.
>>
>> Another idea I just had by looking at the Data::Dumper docs was that
>> maybe some funny refs are in the structure it's trying to write?  It
>> says "$VARn names will be avoided where possible", and maybe in this
>> case it doesn't think it's possible.  So we'd probably also need to
>> see the build_params file to diagnose that.
> 
> Im shocked that anyone is using Terse in production code. It is
> completely unsafe and intended ONLY for debugging purposes. In fact id
> say that using Data::Dumper without Purity(1) as a serialization
> mechanism in production code is simply insane.
> 
> All you need is a single ref in two positions in a data structure to
> make an unevalable dump without Purity(1). With Terse it will just be
> worse.

If that's the case, perhaps the docs for Terse could use stronger language.
Right now it's a little obtuse.

·   $Data::Dumper::Terse  or  $OBJ−>Terse([NEWVAL])

When set, Data::Dumper will emit single, non‐self‐referential
values as atoms/terms rather than statements.  This means that the
$VARn names will be avoided where possible, but be advised that
such output may not always be parseable by "eval".

Something like B<don't use this to serialize data in production!>


-- 
There will be snacks.

Reply via email to