You can push directly onto the hash value,
which does what you want. I've eliminated intermediate steps and temporary variables, and replaced the C-style loop with a more perly one. The code will work even if the data lines are not all the same length. Note that the length function is called on $_ by default.use Data::Dumper; my %hash; my $sub_length = 2; while (<DATA>) { chomp; for my $j (0 .. length - $sub_length) { push @{$hash{$j}}, substr $_, $j, $sub_length; } } print Dumper \%hash; __DATA__ ABDC EFGH
Your code appears to overwrite the results from previous data lines each time. Is that the result you see?
After Compline,
Zaxo
In reply to Re: Getting columnwise substring from multiple lines
by Zaxo
in thread Getting columnwise substring from multiple lines
by monkfan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |