OK, I'm trying things. Here's what I've got.
This first one is the nominal - it works and accomplishes what I want. I've decluttered from above so I'm only dealing with one hash and not using a temporary variable for the big, modular math. I've added a nice map statement to turn %p2C inside out, becoming %C2p.
This produces output thus:
C:\chas_sandbox>foreachasmap.pl
CT: a b c d e f g h i j k l m n o p q r s t u v w x y z
pt: F S Q I M X J L P Z R E A W U B N T C K O D V Y H G
CT: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
pt: m p s v l a z y d g t h e q u i c k b r o w n f x j
C:\chas_sandbox>
Next, I've turned the if statement into a ( ? : ) operator. In version 1 I was looking for if (not exists . . .) so I needed something to do if it did exists and assigned to a hash key that I knew I wouldn't use, '#'. I've spotted my bug here - the autoincrement of $a happens every time now instead of only if (not exists . . .). Any suggestions for that or am I a victim of my own ambition?
Here's the second output.
C:\chas_sandbox>foreachasmap.pl
CT: # a b c d e f g h i j k l m n o p q r s t u v w x y z
pt: T N S Q Q M X S L P A R M C W U D N T E K O G V Z P O
CT: A C D E G K L M N O P Q R S T U V W X Z
pt: j m p s v t h l q z i c k b # o w n f x
The last version here would be what I'm really after. I'm just moving things around according to the doc for map:
%hash = map { getkey($_) => $_ } @array;
is just a funny way to write
%hash = ();
foreach $_ (@array) {
$hash{getkey($_)} = $_;
}
I have a foreach, a list and I'm mapping a key to a value in a hash, so it seems it should be no more complicated than this. Here's the code:
I don't even get the same output as in version 2:
C:\chas_sandbox>foreachasmap.pl
CT: a b c d e f g h i j k l m n o p q r s t u v w x y z
pt: U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
CT: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
pt: g h i j k l m n o p q r s t u v w x y z a b c d e f
C:\chas_sandbox>
I know this may all seem academic since it's working in version 1, but, well, it's academic and I'd like to learn something.
|