i am not entirely sure, but a lookbehind requires fixed width. how about instead matching the generic name:user and testing for a user number? this is almost definitely not the most elegant hack in terms of a minimalist expression or efficiency, but i think it works.
while ($source =~ m/(name.*?)(?=name)/sg) {
if ($& =~ m/(.*user: 2)/s) { print "$1\n"; }
}
e-mail neshura