I'd like to note that Hash tables don't preserve the order they're created, and 
that this isn't a perl6 thing, this is intrinsic to the definition of hash 
tables.

On October 3, 2017 9:06:47 AM EDT, Andrew Kirkpatrick <uberm...@gmail.com> 
wrote:
>Thanks, your script enticed me to explore different ways of
>constructing a hash table. I dimly recall something about map having
>access to an index variable, but couldn't find it documented so maybe
>I was dreaming. The process of figuring out these approaches
>highlighted that so much perl6 documentation on the web is outdated. I
>guess what the perl6.org site needs is more examples. Rosettacode was
>also useful.
>
>#!/usr/bin/env perl6
>
>#`{
>Hashes do not print in the order they are created.  it is a Perl 6
>thing.
>  To overcome this, create an index of the hash.
>}
>
>my @SmtpIndex =
>qw[ DebugTrace smtp port username password from to Subject Text
>FileName ];
>
>my %Smtp =
>  [ "{ @SmtpIndex[0] }" => "1",
>    "{ @SmtpIndex[1] }" => "smtps://smtp.zoho.com",
>    "{ @SmtpIndex[2] }" => "465",
>    "{ @SmtpIndex[3] }" => 'la...@zoho.com',
>    "{ @SmtpIndex[4] }" => "NaYukYukYuk",
>    "{ @SmtpIndex[5] }" => 'la...@zoho.com',
>    "{ @SmtpIndex[6] }" => @['cu...@zoho.com','m...@zoho.com'],
>    "{ @SmtpIndex[7] }" => "Stooges",
>    "{ @SmtpIndex[8] }" => "Certainly!",
>    "{ @SmtpIndex[9] }" => @[""] ];
>
>sub output(%hash, @index=@SmtpIndex) {
>    for @index -> $key {
>        printf "%10s = %s\n", $key, %hash{$key};
>    }
>}
>
>my @SmtpValues = %Smtp{@SmtpIndex};
>
>my %Smtp2 = do {
>    my $index = 0;
>    @SmtpValues.map: { "{ @SmtpIndex[$index++] }" => $_ };
>};
>
>my %Smtp3 = gather for 0..@SmtpIndex.elems-1 {
>    take @SmtpIndex[$_] => @SmtpValues[$_].Str;
>};
>
>my %Smtp4 = @SmtpIndex Z=> @SmtpValues;
>
># These are all equivalent
># output(%Smtp);
># output(%Smtp2);
># output(%Smtp3);
>output(%Smtp4);
>
>
>On 3 October 2017 at 07:23, ToddAndMargo <toddandma...@zoho.com> wrote:
>> Hi All,
>>
>> I created a keeper not on hash indexing.  I though
>> maybe you guys would find it interesting, if for nothing
>> else, for the syntax used
>>
>> -T
>>
>>
>> Perl6: Indexing a hash:
>>
>> <code>
>> #!/usr/bin/env perl6
>>
>> #`{
>>   Hashes do not print in the order they are created.  it is a Perl 6
>thing.
>>   To overcome this, create an index of the hash.
>> }
>>
>> my @SmtpIndex =
>>    qw[ DebugTrace smtp port username password from to Subject Text
>FileName
>> ];
>>
>> my %Smtp =
>>   [ "{ @SmtpIndex[0] }" => "1",
>>     "{ @SmtpIndex[1] }" => "smtps://smtp.zoho.com",
>>     "{ @SmtpIndex[2] }" => "465",
>>     "{ @SmtpIndex[3] }" => 'la...@zoho.com',
>>     "{ @SmtpIndex[4] }" => "NaYukYukYuk",
>>     "{ @SmtpIndex[5] }" => 'la...@zoho.com',
>>     "{ @SmtpIndex[6] }" => @['cu...@zoho.com','m...@zoho.com'],
>>     "{ @SmtpIndex[7] }" => "Stooges",
>>     "{ @SmtpIndex[8] }" => "Certainly!",
>>     "{ @SmtpIndex[9] }" => @[""] ];
>>
>> for @SmtpIndex -> $key { printf "%10s = %s\n", "$key", "%Smtp{$key}";
>}
>> </code>
>>
>>
>> $ HashIndexTest.pl6
>> DebugTrace = 1
>>       smtp = smtps://smtp.zoho.com
>>       port = 465
>>   username = la...@zoho.com
>>   password = NaYukYukYuk
>>       from = la...@zoho.com
>>         to = cu...@zoho.com m...@zoho.com
>>    Subject = Stooges
>>       Text = Certainly!
>>   FileName =

Reply via email to