my $data = 'blabla;tag1=12345;blabla;tag2=99999'; my $tag1; my $tag2; $data =~ /tag1=(\d+)/; $tag1 = $1 if $1; $data =~ /tag2=(\d+)/; $tag2 = $1 if $1; # # or # # the '?' in the below regex means it'll grab the closest # tag2, and ignore any beyond it ($tag1, $tag2) = $data =~ /tag1=(\d+).*?tag2=(\d+)/ if $1 && $2; print "$tag1, $tag2";