@{$var1{$var2}}
am 22.06.2011 18:44:56 von josanabr
Hi,
I'm reading a program written in perl and I read this statement
--
To unsubscribe, e-mail: beginners-unsubscribe@perl.org
For additional commands, e-mail: beginners-help@perl.org
http://learn.perl.org/
Re: @{$var1{$var2}}
am 22.06.2011 21:49:24 von Rob Coops
--0015175cf75822e6f604a652455e
Content-Type: text/plain; charset=UTF-8
On Wed, Jun 22, 2011 at 6:44 PM, josanabr wrote:
> Hi,
>
> I'm reading a program written in perl and I read this statement
>
>
> --
> To unsubscribe, e-mail: beginners-unsubscribe@perl.org
> For additional commands, e-mail: beginners-help@perl.org
> http://learn.perl.org/
>
>
>
Without any more information I would have to say good, and what do you want
form the list? (it really does help if you formulate a question and ask what
it is that you want to know ;-)
I suspect hat you are wondering what this means right?
Lets dissect this a little:
Lets take the inner most thing ($var2) this is obviously a scalar (or a
reference to another variable (I'll explain why I am betting it is a scalar
in a bit))
Then we see the following: $var1{...} this is the way one accesses a
variable in a hash based on the key (the thing that goes between those
brackets). Usually the keys used in a has are scalars of course there is
nothing stopping anyone from using complex data structures as a key but it
is performance wise not the smartest thing to do.
The last bit then @{...} basically says treat what is in side the brackets
as an array (which is what one would do if one is expecting an array
reference to be returned from $var1's value associated with key $var2.
So what would the data structure look like?
{
"Hash key 1" => \[
'Array value 1',
'Array value 2',
...
],
"Hash key 2" => \[
'Array value 1',
'Array value 2',
...
],
...
}
Or in text form: $var1 is an hash containing keys associated with values
which are references to arrays.
I hope that explains things a little bit. :-)
Regards,
Rob
--0015175cf75822e6f604a652455e--
Re: @{$var1{$var2}}
am 22.06.2011 21:58:13 von Jim Gibson
On 6/22/11 Wed Jun 22, 2011 9:44 AM, "josanabr"
scribbled:
> Hi,
>
> I'm reading a program written in perl and I read this statement
It is best to put all of your post in the body of your message, and use the
title as a description of your question.
Do you have a specific question about the statement appearing in your title?
This one:
@{$var1{$var2}}
I can tell you that the syntax of that statement implies that %var1 is a
hash, $var2 is a scalar, the element of %var1 indexed by $var2 is
$var1{$var2} and is a reference to an array, and @{$var1{$var2}} is the
dereferenced array.
See 'perldoc perlref' for information about references in Perl.
--
To unsubscribe, e-mail: beginners-unsubscribe@perl.org
For additional commands, e-mail: beginners-help@perl.org
http://learn.perl.org/
Re: @{$var1{$var2}}
am 22.06.2011 22:16:41 von Uri Guttman
>>>>> "JG" == Jim Gibson writes:
JG> See 'perldoc perlref' for information about references in Perl.
even better for a newbie is to read 'perldoc perlreftut' and later
perllol and perldsc. leave perlref for when you have some experience
with refs under your belt and want more info.
uri
--
Uri Guttman ------ uri@stemsystems.com -------- http://www.sysarch.com --
----- Perl Code Review , Architecture, Development, Training, Support ------
--------- Gourmet Hot Cocoa Mix ---- http://bestfriendscocoa.com ---------
--
To unsubscribe, e-mail: beginners-unsubscribe@perl.org
For additional commands, e-mail: beginners-help@perl.org
http://learn.perl.org/
Re: @{$var1{$var2}}
am 22.06.2011 22:22:48 von Shlomi Fish
Hi John,
On Wed, 22 Jun 2011 09:44:56 -0700 (PDT)
josanabr wrote:
> Hi,
>=20
> I'm reading a program written in perl and I read this statement
>=20
Well, assuming you are interested to learn about what @{$var1{$var2}} mean,
then:
1. $var1{$var2} is the value of the %var1 hash which is keyed by $var2.
2. @{$array_ref} dereferences the array $array_ref into an array.
Regards,
Shlomi Fish
--=20
------------------------------------------------------------ -----
Shlomi Fish http://www.shlomifish.org/
Interview with Ben Collins-Sussman - http://shlom.in/sussman
Shlomi: if you read my stories, Iâ=99ll give you 1,000,000 virtual dol=
lars.
Sjors: causing me to have a lot of extra virtual time!
Please reply to list if it's a mailing list post - http://shlom.in/reply .
--
To unsubscribe, e-mail: beginners-unsubscribe@perl.org
For additional commands, e-mail: beginners-help@perl.org
http://learn.perl.org/
Re: @{$var1{$var2}}
am 23.06.2011 08:40:43 von rvtol+usenet
On 2011-06-22 18:44, josanabr wrote:
> I'm reading a program written in perl and I read this statement
@{ $var1{ $var2 } }
Such variable names with numbers in them are often a sign of bad code.
What is the context?
--
Ruud
--
To unsubscribe, e-mail: beginners-unsubscribe@perl.org
For additional commands, e-mail: beginners-help@perl.org
http://learn.perl.org/
Re: @{$var1{$var2}}
am 23.06.2011 12:41:44 von derykus
On Jun 22, 12:49=A0pm, rco...@gmail.com (Rob Coops) wrote:
> On Wed, Jun 22, 2011 at 6:44 PM, josanabr wrote=
:
> ...
> Lets dissect this a little:
>
> Lets take the inner most thing ($var2) this is obviously a scalar (or a
> reference to another variable (I'll explain why I am betting it is a scal=
ar
> in a bit))
> Then we see the following: $var1{...} this is the way one accesses a
> variable in a hash based on the key (the thing that goes between those
> brackets). Usually the keys used in a has are scalars of course there is
> nothing stopping anyone from using complex data structures as a key but i=
t
> is performance wise not the smartest thing to do.
> The last bit then @{...} basically says treat what is in side the bracket=
s
> as an array (which is what one would do if one is expecting an array
> reference to be returned from $var1's value associated with key $var2.
>
> So what would the data structure look like?
> {
> =A0"Hash key 1" =3D> \[
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0'Array value 1',
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0'Array value 2',
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0...
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ],
> =A0"Hash key 2" =3D> \[
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0'Array value 1',
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0'Array value 2',
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0...
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ],
> =A0...
>
> }
Hm, I think it's worth noting though if you really want to
"treat what is in side the brackets as an array", you'd
likely be using a simpler data structure such as:
"Hash key 2" =3D [ "Array value 1", "Array value 2", ... ]
rather than:
"Hash key 2" =3D \[ "Array value 1", "Array value 2", ... ]
since the latter actually creates a ref to an anonymous
array. And, if it is a "ref to a ref", you'd need to deref
the original like this:
@{ ${$var1{$var2}} }
rather than just: @{ $var1{$var2} }
See: perldoc perlref
>
> Or in text form: $var1 is an hash containing keys associated with values
> which are references to arrays.
>
--
Charles DeRykus
--
To unsubscribe, e-mail: beginners-unsubscribe@perl.org
For additional commands, e-mail: beginners-help@perl.org
http://learn.perl.org/
Re: @{$var1{$var2}}
am 06.07.2011 12:26:40 von Dejian Zhao
I prefer to decode this kind of code from outside to inside.
1. The sigil @ indicates the result is an array
2. Thus, $var1{$var2} should be an array reference
3. The structure of $var1{$var2} suggests var1 means a hash, or %var1
4. Thus, $var2 is a key of the hash %var1
So, %var1 is a hash of array reference, or the values of the hash %var1
are array references. @{$var1{$var2}} is trying to dereference the
references and get the arrays.
On 2011-6-23 0:44, josanabr wrote:
> Hi,
>
> I'm reading a program written in perl and I read this statement
--
To unsubscribe, e-mail: beginners-unsubscribe@perl.org
For additional commands, e-mail: beginners-help@perl.org
http://learn.perl.org/