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 =