use strict; use warnings; my $x= <<"__X__" x 4; # Increase multiplier for benchmarking A data for A B data for b C data for c __X__ # Method #1 - works but I don't like using $1,$2 - would rather use names while($x=~/(^A|^B)(.+)$/mg){ print "$1 method1 $2\n" } # Method #2 - open my $f,"<",\$x or die $!; while(<$f>){ my ($name,$data) = m/(^A|^B)(.+)$/ or next; print "$name method2 $data\n" } close $f; # Method #3 (infinite loop) #while(my ($name,$data)=$x=~/(^A|^B)(.+)$/mg){ # print "$name method3 $data\n" #}