http://qs1969.pair.com?node_id=1060449


in reply to Re: Perl Syntax
in thread Perl Syntax

@Suicide - I'm not trying to find what the value is but what does it do? What does 0+ do to $new?

Replies are listed 'Best First'.
Re^3: Perl Syntax
by derby (Abbot) on Oct 30, 2013 at 21:20 UTC

    Uggh ... that is one bad code smell ... basically in that context you're getting the memory address of the reference value and using it as the key for the hash.

    -derby

      Some call it code smell, others call it the basis for managing inside-out objects.

      Update: Example from Class::Std:

      sub import { my $caller = caller; no strict 'refs'; *{ $caller . '::ident' } = \&Scalar::Util::refaddr;

      Dave

        Not an especially useful technique for managing inside-out objects. (Not without some care anyway.) Reference addresses can be recycled.

        use strict; use warnings; use Scalar::Util 'refaddr'; use Data::Dumper; for my $i (0..2) { my $hash = [$i]; printf "The hash has refaddr %08X, and contents are...\n", refaddr +($hash); print Data::Dumper->Dump([$hash], ['$hash']); }

        With carefully written CLONE and DESTROY methods, using the refaddr as a hash key can be made to work, but something like Hash::FieldHash saves a lot of work.

        use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name