Push to array reference

后端 未结 4 513
野的像风
野的像风 2020-12-29 02:40

Is it possible to push to an array reference in Perl? Googling has suggested I deference the array first, but this doesn\'t really work. It pushes to the defere

4条回答
  •  梦谈多话
    2020-12-29 03:24

    It might help to think in terms of memory addresses instead of variable names.

    my @a = ();       # Set aside memory address 123 for a list.
    
    my $a_ref = [@a]; # Square brackets set aside memory address 456.
                      # @a COPIES the stuff from address 123 to 456.
    
    push(@$a_ref,"hello"); # Push a string into address 456.
    
    print $a[0]; # Print address 123.
    

    The string went into a different memory location.

    Instead, point the $a_ref variable to the memory location of list @a. push affects memory location 123. Since @a also refers to memory location 123, its value also changes.

    my $a_ref = \@a;       # Point $a_ref to address 123. 
    push(@$a_ref,"hello"); # Push a string into address 123.
    print $a[0];           # Print address 123.
    

提交回复
热议问题