C:\test>p1 [0] Perl> $str = join'', 'a'..'z',0..9,'A'..'Z';; [0] Perl> @fields = ( [ name1 => { start => 0, len=> 10 } ], [ name2 => { start => 8, len=> 3 } ], [ name3 => { start => 11, len=> 14 } ], );; ## This one line does all the work! [0] Perl> @bits = map{ substr $str, $_->[1]{start}, $_->[1]{len} } @fields;; [0] Perl> print for @bits;; abcdefghij ijk lmnopqrstuvwxy