#!/usr/bin/perl use re qw(eval); my $pattern2; my $str2 = "RS"; $pattern2 = qr{(?.*)(?{ push(@rc1, ${^MATCH}) })\K(?{ $p_rootcode = "@rc1" })(?[0-9])(?{ push(@rc2, ${^MATCH}) })(?[A-Z])(?{ push(@rc3, ${^MATCH}) })(?[A-Z])(?{ push(@rc4, ${^MATCH}) })$}; $str2 =~ m/$pattern2/; print "Value of p_rootcode in Pattern 2 is : $p_rootcode\n";