use strict; use List::MoreUtils qw(each_array); undef $/; my $text=; my $a=$1 if $text=~m#v_x \{([^\}]+)\}#; my @a=split( "\n", $a ); my $b=$1 if $text=~m#v_y \{([^\}]+)\}#; my @b=split( "\n", $b ); my $c=$1 if $text=~m#v_z \{([^\}]+)\}#; my @c=split( "\n", $c ); my $ea = each_array(@a, @b, @c); while ( my ($a, $b, $c) = $ea->() ) { print "$a\t$b\t$c\n"; } __DATA__ v_x { x1 x2 x3 x4 x5 x6 x7 x8 } v_y { y1 y2 y3 y4 y5 } v_z { z1 z2 z3 z4 z5 z6 } #### x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4 x5 y5 z5 x6 z6 x7 x8