arifsaha has asked for the wisdom of the Perl Monks concerning the following question:

Hi!

Do you know how to create a reference to an element of an array or hash? For instance I have an array @a, and I like $a2r contains a reference to $a[2]. Anyway to do it in Perl?

Keep in mind this is not the case where $a[2] contain a reference and $a2r contains the same reference, but instead $a2r contain a reference to the scalar stored in $a[2].

Let me explain more using the pseudo code below, RefTo represent the mechanism in question:

my @a= (1, 2, 3, 4); my $p= RefTo $a[2]; $$p= 9; print join(",", @a) # should print 1,2,9,4

So, any idea wether there is such mechanism as RefTo in Perl?

-- 
S P Arif Sahari Wibowo
http://www.arifsaha.com/

Replies are listed 'Best First'.
Re: a reference to an element of an array or hash: how to create?
by Fletch (Bishop) on Aug 05, 2008 at 14:20 UTC

    The normal reference operator \ works just fine for elements of aggregates.

    use Data::Dumper qw( Dumper ); my @a = ( 1, 2, 3, 4 ); print Dumper( \@a ); $x = \$a[2]; $$x = 9; print Dumper( \@a ); exit 0; __END__ $VAR1 = [ 1, 2, 3, 4 ]; $VAR1 = [ 1, 2, 9, 4 ];

    The cake is a lie.
    The cake is a lie.
    The cake is a lie.

Re: a reference to an element of an array or hash: how to create?
by FunkyMonk (Bishop) on Aug 05, 2008 at 14:22 UTC
    The same way you'd make a reference to any other structure: the backslash operator:
    my $p = \$a[2];


    Unless I state otherwise, all my code runs with strict and warnings

      Duh! I should try it first, didn't think it will be that easy before.

      Thanks everyone!

      -- 
      S P Arif Sahari Wibowo
      http://www.arifsaha.com/
Re: a reference to an element of an array or hash: how to create?
by toolic (Bishop) on Aug 05, 2008 at 14:39 UTC
Re: a reference to an element of an array or hash: how to create?
by pjotrik (Friar) on Aug 05, 2008 at 14:22 UTC
    #!/usr/bin/perl use warnings; use strict; my @array = qw(1 2 3 4); my $r = \$array[2]; $$r = 5; print @array;
Re: a reference to an element of an array or hash: how to create?
by dHarry (Abbot) on Aug 05, 2008 at 14:28 UTC

    Use a \

    use strict; use warnings; my @a= (1, 2, 3, 4); my $p= \$a[2]; print $$p;

    See perlreftut for details