That doesn't do what my code does at all, which is to avoid the need to fix the array by transposing it by creating it right in the first place. From the point of view, your code is a step backwards. If you wanted to change my code to avoid pushing, then you'd do
my @data;
while (<>) {
my @fields = split ' ';
my $col = $. - 1;
for my $row (0..$#fields) {
$data[$row][$col] = $fields[$row];
}
}
Tested.
| [reply] [d/l] |
| [reply] |
Good code, but with that very high sigil-to-text ratio, I was scrambling Google to find out what "*_'_" meant. (FWIW, I did not find the answer in Google, or the docs, but figured it out experimentally). (Side note - the single-quote also threw off my editor's perl-highlighter).
Eventually, I decided I would not write code like that, fascinating as it is - it turns out to be just a way to avoid declaring a local variable. It works just as well replacing all instances of that and "$_'_" with "$Column_Index", and becomes a lot more readable ("local *_'_" being replaced by "my $Column_Index" helps by functioning without resorting to "no strict 'refs'").
I'm hoping this node helps other monks who may not have unraveled "_'_".
I'm also curious as to how this would be written in idiomatic perl6.
"As you get older three things happen. The first is your memory goes, and I can't remember the other two... "
- Sir Norman Wisdom
| [reply] |
@a = ( [1..3],['a'..'c'],['x'..'z']);;
@a = map{ [ map{ shift @$_ } @a ] } 1 .. @{ $a[0] };;
print pp @a;;
([1, "a", "x"], [2, "b", "y"], [3, "c", "z"])
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] |
Too much shifting for his taste, surely :)
| [reply] |
I'm hoping this node helps other monks who may not have unraveled "_'_".
You didn't say what it was. ' is Perl4 for ::. It's still supported in Perl5, by it shouldn't be used in new code. This is documented in the second paragraph of perlmod.
$_::_ is just some arbitrary variable. Despite it's appearance to $_, it's not a special variable.
| [reply] [d/l] [select] |
| [reply] |