in reply to Re^2: variation on splitting a string into elements of an array
in thread splitting a sequence using unpack

Yeah, I thought about a loop, but I was afraid it would obscure what the code is doing - I'd certainly switch to a loop if doing more than 3 or four repetitions, and if I were doing more than two statements per offset, but at less than that the loop syntax just clutters things up. (I realize that this is a matter of personal taste, and I might change my answer depending on my mood).

Good point about using length - again, I think my way is clearer, but I'm not sure whether that's the use of length or the ->. (which you could drop)

By the way, I would have written the first line of your loop as:

$triplets{$_} = [unpack("x$_ (a3)*", $line)];
But that's only because I don't like using @{$unusedvarref} to auto-vivify.
-- @/=map{[/./g]}qw/.h_nJ Xapou cets krht ele_ r_ra/; map{y/X_/\n /;print}map{pop@$_}@/for@/