use strict;
use warnings;
my $data =<<'END';
x = 10;
y = 12;
z = 100;
END
sub parse {
my $data_ref = shift;
my $rgx = qr/(\w+)\s*=\s*(\d+)\s*;\s*/;
my @m = $$data_ref =~ /\G$rgx/gc;
return \@m;
}
while (my @matches = @{parse(\$data)}) {
while (my $var = shift @matches) {
my $val = shift @matches;
print "I got variable ($var) set to value ($val)\n";
}
print "Trying next parse...\n";
}
####
I got variable (x) set to value (10)
I got variable (y) set to value (12)
I got variable (z) set to value (100)
Trying next parse...
####
I got variable (x) set to value (10)
Trying next parse...
I got variable (y) set to value (12)
Trying next parse...
I got variable (z) set to value (100)
Trying next parse...