|
|||||
|
|
#1 |
|
|
I have an hash as $Hash{Name}{NickName} Where Name is String NickName Array I can get All NickName in an array as @AllNN=values @{$$Hash{Name}} my query is Why I cant get the same result with @AllNN=values %{$Hash{Name}} or @AllNN=values $Hash{Name} -- |
|
|
#2 |
|
|
> I have an hash as $Hash{Name}{NickName} > Where Name is String > NickName Array > I can get All NickName in an array as > > @AllNN=values @{$$Hash{Name}} I find that hard to believe. Please post a short but complete program that people can copy and run, and that illustrates what you have. -- Gunnar Hjalmarsson Email: http://www.gunnar.cc/cgi-bin/contact.pl |
|
|
#3 |
|
|
> Hi > I have an hash as $Hash{Name}{NickName} > Where Name is String > NickName Array > I can get All NickName in an array as > > @AllNN=values @{$$Hash{Name}} > > my query is Why I cant get the same result with > @AllNN=values %{$Hash{Name}} > or > @AllNN=values $Hash{Name} > Analize your datastructure. It looks something like this, yes? %Hash = ( 'Robert' => ['Bob', 'Rob'], 'William' => ['Will', 'Billy'], ); Now analize the code you were trying to use. values %{$Hash{'Robert'}} $Hash{'Robert'} is an array reference. It references an array containing Bob and Rob. You cannot derefernce this as a hash because it is not a hash reference. values $Hash{'Robert'} $Hash{'Robert'} is an array reference. You cannot use values on an array reference. The argument to values() must be a hash. I don't quite understand your claim that values @{$$Hash{Name}} works like you want it. Even if I have misunderstood your datastructure, you cannot p*** an array to values(). This is a syntax error. Using the datastructure I typed above, you would get all the nicknames for a particular name like this: @nicks = @{$Hash{'Robert'}}; If you want *all* nicknames, you could use something like this: @all_nicks = map { @{$Hash{$_}} } keys %Hash; If you need further ***istance (if, for example, I have not understood your description of your datastructure), please post a short but complete program demonstrating your issue. Thank you, Paul Lalli |
|
|
#4 |
|
|
Paul Lalli wrote:
> On Fri, 18 Jun 2004, George Kinley wrote: > > > Hi > > I have an hash as $Hash{Name}{NickName} > > Where Name is String > > NickName Array > > I can get All NickName in an array as > > > > @AllNN=values @{$$Hash{Name}} > > > > my query is Why I cant get the same result with > > @AllNN=values %{$Hash{Name}} > > or > > @AllNN=values $Hash{Name} > > > > Analize your datastructure. It looks something like this, yes? > > %Hash = ( > 'Robert' => ['Bob', 'Rob'], > 'William' => ['Will', 'Billy'], > ); > > > Now analize the code you were trying to use. > > values %{$Hash{'Robert'}} > > $Hash{'Robert'} is an array reference. It references an array > containing Bob and Rob. You cannot derefernce this as a hash because > it is not a hash reference. > > values $Hash{'Robert'} > > $Hash{'Robert'} is an array reference. You cannot use values on an > array reference. The argument to values() must be a hash. > > I don't quite understand your claim that values @{$$Hash{Name}} works > like you want it. Even if I have misunderstood your datastructure, > you cannot p*** an array to values(). This is a syntax error. > > Using the datastructure I typed above, you would get all the > nicknames for a particular name like this: > @nicks = @{$Hash{'Robert'}}; > > If you want all nicknames, you could use something like this: > > @all_nicks = map { @{$Hash{$_}} } keys %Hash; > > > > If you need further ***istance (if, for example, I have not understood > your description of your datastructure), please post a short but > complete program demonstrating your issue. > > Thank you, > Paul Lalli I believe its my mistake that I did not mentioned that I was getting this HASH as reference from another procedure, so that is the reason I need to dereference it by double "$" -- |
|
|
#5 |
|
|
On Fri, 18 Jun 2004, George Kinley wrote:
> Paul Lalli wrote: > > > On Fri, 18 Jun 2004, George Kinley wrote: > > > > > Hi > > > I have an hash as $Hash{Name}{NickName} > > > Where Name is String > > > NickName Array > > > I can get All NickName in an array as > > > > > > @AllNN=values @{$$Hash{Name}} > > > > > > my query is Why I cant get the same result with > > > @AllNN=values %{$Hash{Name}} > > > or > > > @AllNN=values $Hash{Name} > > > > > > > I don't quite understand your claim that values @{$$Hash{Name}} works > > like you want it. Even if I have misunderstood your datastructure, > > you cannot p*** an array to values(). This is a syntax error. > > > > I believe its my mistake that I did not mentioned that I was getting > this HASH as reference from another procedure, so that is the reason I > need to dereference it by double "$" This is not at all the issue. You're claiming that you're p***ing an array (something that starts with '@') to the values() function. This doesn't work. It's a syntax error. It doesn't matter how many levels of dereferencing are involved. Post a short but complete program that illustrates your problem if you're still having one. Paul Lalli |
|
|
#6 |
|
|
Paul Lalli wrote:
> On Fri, 18 Jun 2004, George Kinley wrote: > > > Paul Lalli wrote: > > > > > On Fri, 18 Jun 2004, George Kinley wrote: > > > > > > > Hi > > > > I have an hash as $Hash{Name}{NickName} > > > > Where Name is String > > > > NickName Array > > > > I can get All NickName in an array as > > > > > > > > @AllNN=values @{$$Hash{Name}} > > > > > > > > my query is Why I cant get the same result with > > > > @AllNN=values %{$Hash{Name}} > > > > or > > > > @AllNN=values $Hash{Name} > > > > > > > > > > I don't quite understand your claim that values @{$$Hash{Name}} > > > works like you want it. Even if I have misunderstood your > > > datastructure, you cannot p*** an array to values(). This is a > > > syntax error. > > > > > > > I believe its my mistake that I did not mentioned that I was getting > > this HASH as reference from another procedure, so that is the > > reason I need to dereference it by double "$" > > > This is not at all the issue. You're claiming that you're p***ing an > array (something that starts with '@') to the values() function. This > doesn't work. It's a syntax error. It doesn't matter how many > levels of dereferencing are involved. > > Post a short but complete program that illustrates your problem if > you're still having one. > > Paul Lalli SOrry for asking the wrong question I was also not using the "values" Sorry again But my questions was my query is Why I cant get the same result with > > > > @AllNN=values %{$Hash{Name}} > > > > or > > > > @AllNN=values $Hash{Name} > > > > that was explained by you thanks -- -Gk |