Sweet! I added a reverse print to the pile!
<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] }" => @[""] ];
sub output(%hash, @index=@SmtpIndex) {
for @index -> $key {
printf "%10s = %s\n", $key, %hash{$key};
}
print "\n";
}
sub revoutput(%hash, @index=@SmtpIndex) {
for reverse ( @index ) -> $key {
printf "%10s = %s\n", $key, %hash{$key};
}
print "\n";
}
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);
# print in reverse
revoutput(%Smtp4);
</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 =
FileName =
Text = Certainly!
Subject = Stooges
to = cu...@zoho.com m...@zoho.com
from = la...@zoho.com
password = NaYukYukYuk
username = la...@zoho.com
port = 465
smtp = smtps://smtp.zoho.com
DebugTrace = 1