I doubt that tybalt89 expected any sort of backward movement because I think he or she understands the point illustrated by Athanasius here that a zero-width assertion simply does not move the match start-position at all even if it should happen to capture something. Just for grins, here's a solution that actually does move the match position backwards, although I don't think it will be much to your taste:
c:\@Work\Perl\monks>perl -wMstrict -le
"$_ = '222,345,222,678,222,223,224,222,543';
;;
1 while m{
22[234] , (*MARK:BACK3)
(\d\d\d) (?{ print qq{'$^N'} })
(*SKIP:BACK3) (*FAIL)
}xmsg;
"
'345'
'678'
'223'
'224'
'222'
'543'
Please see Special Backtracking Control Verbs in perlre from Perl version 5.10 onward.
BTW: One reason tybalt89's first thought was for a look-ahead may have been that Perl's regex engine does not support variable-width look-behind, so using a look-behind may simply be a prelude to a re-write that switches to using a look-ahead when a need for some variability is discovered.
Give a man a fish: <%-{-{-{-<
|