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 =