arrays - What exactly mean the ${...} in the perl? -


thinking next. have list

qw(a b c); 

now, assign list nameless (anonymous) array

[ qw(a b c) ] 

so next

use 5.016; use warnings; use diagnostics; $x = [ qw(a b c) ]; ref $x;  #array - $x array reference, , $x->[1]; #prints "b", , [ qw(a b c) ]->[1]; #works 

but happens now?

use 5.016; use warnings 'all'; use diagnostics; ${[ qw(a b c) ]}[1]; 

it prints b, but

my $y = ${[ qw(a b c) ]}; 

is error,

not scalar reference @ pepe line 6 (#1)     (f) perl trying evaluate reference scalar value, found     reference else instead.  can use ref() function     find out kind of ref was.  see perlref.  uncaught exception user code:     not scalar reference @ pepe line 17. 

so, whats mean contruction ${.... }

  • it "works" in say (prints second element of anonymous array), don't understand why
  • but can't assign variable

and hint diagnostics not helpful, because how should use ref when can't assign? missed perlref?

${ expr1 }[ expr2 ] array index dereference. returns element @ index returned expr2 of array referenced reference returned expr1.

${ $array_ref }[ ... ] array references $array[...] arrays.


${ expr } that's not followed [ or { scalar dereference. returns scalar referenced reference returned expr.

${ $scalar_ref } scalar references $scalar scalars.


as can see, when dealing reference, can use same syntax would, except replace name of variables {$ref} (keeping leading sigil).

as such, @{ $array_ref } array references @array arrays.

say @{[ qw(a b c) ]}; 

this essence of chart in earlier post mini-tutorial: dereferencing syntax. see also:


oops, thought had

say ${[ qw(a b c) ]};   # want print b c 

you have

my $y = ${[ qw(a b c) ]}; 

you want

my $y = [ qw(a b c) ]; 

[] creates array , reference array, , returns latter, kinda like

my $y = { @anon = qw(a b c); \@a }; 

Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -