Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Help with cause of "Modification of a read-only value attempted at ..."

by shriken (Priest)
on Sep 28, 2010 at 15:23 UTC ( #862448=note: print w/ replies, xml ) Need Help??


in reply to Re: Help with cause of "Modification of a read-only value attempted at ..."
in thread Help with cause of "Modification of a read-only value attempted at ..."

Trimming down, even before I have a small case that shows the error I have something else wrong. Here're two files that give me different results on 5.8.8 versus 5.10. I think I've already done something wrong at this level of simplicity that I should figure out before building the example up farther.

use strict; use warnings; use configthing qw(); our configthing $cfg = new configthing; use Data::Dumper; print Dumper $cfg;

Then for "configthing.pm"...

package configthing; use strict; use warnings; use fields qw( a b c d ); our %DEFAULTS = ( b => 'default for b', c => 'default for c' ); 1; sub new { my $this = shift; unless (ref $this) { $this = fields::new($this); } our %FIELDS; foreach my $k ( keys(%FIELDS) ) { $this->{$k} = '' unless defined($this->{$k}); } $this->{a} = 'set at initialization'; foreach my $k ( keys(%DEFAULTS) ) { $this->{$k} = $DEFAULTS{$k}; } return $this; }

With 5.8.8 I get

$VAR1 = bless( [ bless( { 'c' => 3, 'a' => 1, 'b' => 2, 'd' => 4 }, 'pseudohash' ), 'set at initialization', 'default for b', 'default for c', '' ], 'configthing' );

And 5.10.1 gives me:

$VAR1 = bless( { 'c' => 'default for c', 'a' => 'set at initialization', 'b' => 'default for b', 'd' => '' }, 'configthing' );


Comment on Re^2: Help with cause of "Modification of a read-only value attempted at ..."
Select or Download Code
Re^3: Help with cause of "Modification of a read-only value attempted at ..."
by Corion (Pope) on Sep 28, 2010 at 15:29 UTC

    This is completely to be expected in a change from 5.8 to 5.10 because pseudohashes do not exist anymore in 5.10. The implementation of fields was changed to shield you from this other change I believe.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://862448]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2014-07-10 06:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (200 votes), past polls