in reply to Bizarre copy of HASH in leave

Having put the code in a small test program there's nothing obviously 'bizarre' about it running under v5.6.1
package rincewind; sub new { bless {}, shift } sub jil { my ($self) = @_; my $outstr = $self->_jilout('insert_job') . $self->_jilout('job_type'); $outstr .= $_ foreach map $self->_jilout($_), @$self{ @{$self->{_fields_in_seq}} }; $outstr; } sub _jilout { my ($self,$attr) = @_; return '' if !exists $self->{$attr} or !defined $self->{$attr}; "$attr: ".$self->{$attr}."\n"; } package main; use strict; use warnings; use Data::Dumper; my $o = rincewind->new; @$o{qw/insert_job job_type/} = qw[ 50 daemon ]; my @flds = qw[ foo bar baz quux ]; @$o{ @flds } = reverse @flds; @{ $o->{_fields_in_seq} } = @flds; print $o->jil, $/; exit 0; __output__ insert_job: 50 job_type: daemon quux: foo baz: bar bar: baz foo: quux
I can't see any attempts to copy an internal variable that isn't copyable[1]. Maybe some version info would help?
HTH

_________
broquaint

[1] paraphrased from perldiag

Replies are listed 'Best First'.
Re: Re: Bizarre copy of HASH in leave
by rinceWind (Monsignor) on Jul 09, 2002 at 11:55 UTC
    broquaint, Thanks for your help.

    Your simplification of my somewhat convoluted expression caused the bizarreness to go away (caffeine deficit on my part).

    map $self->_jilout($_), @$self{ @{$self->{_fields_in_seq}} };
    behaves as expected. My perl version is 5.6.1 BTW.