> On Jan 11, 2019, at 7:08 PM, ToddAndMargo via perl6-users 
> <perl6-us...@perl.org> wrote:
> 
> Hi All,
> 
> Now what am I doing wrong?  I need to convert the value in a
> hash to a string:
> 
> $ p6 'my $x = "acme"; my Str $y; my %Vendors = ( acme => ContactName => 
> "Larry" ); $y= %Vendors<ContactName>; say $y;'
> $ p6 'my $x = "acme"; my Str $y; my %Vendors = ( acme => ContactName => 
> "Larry" ); $y= %Vendors<ContactName>.Str; say $y;’
—snip—

This has nothing to do with string conversion.

Compared to the previous email thread, two problems have been introduced:

1. The curly braces from around the second-level hash are now missing, changing 
from 
    CompanyName => { SomeKey => "foo" ... }
to
    CompanyName =>   SomeKey => "foo" ...
So, you no longer have a HashOfHashes, you have a HashOfPair (singular Pair, 
not plural Pairs), so while this syntax can technically be made to work, it 
would only work with a single key, which is pointless.

2. The first level (company name?) of your HashOfHashes is no longer 
dereferenced. I see that you populated `$x`, but did not ever use it.
        %Vendors{"acme"}<ContactName>;                  # Correct
        %Vendors{$company}<ContactName>;        # Correct, if $company contains 
`acme`
        %Vendors<acme><ContactName>;            # Correct and most Perlish, if 
company is constant
        %Vendors<ContactName>;                          # Bad; will never work 
unless you happen to have a company really named "ContactName”. (Even then, you 
would get the whole first-level hash)

UPDATE: Just before sending this, I peeked ahead at the exchange between Tom 
Browder and yourself. I think that you hit a snag, and constructed an example 
that showed what you thought was the snag, but was really a new set of problems 
that exists only in your example. FYI, every time that I have made this 
mistake, it was always due to my creating an example from scratch, instead of 
slowly massaging the real problem code down into a minimal form for public 
discussion. YMMV.

I am glad you and Tom resolved your problem before I could `send`, but I did 
not want this post to go to waste.

— 
Hope this helps,
Bruce Gray (Util of PerlMonks)

Reply via email to