in reply to Re^4: Can you assign to pos() in a s/foo/bar/g
in thread Can you assign to pos() in a s/foo/bar/g

Thx John, your tip was very helpful, as it gives me the right idea...

Perhaps I did not explain good enough the scenario. But both your solutions have a little error, example:
"Bla class="x1" class="x2" otheratr="y0" class="x3" Blabla
==> Bla class="x1 x2" otheratr="y0 x3" Blabla
correct would be:
Bla class="x1 x2" otheratr="y0" class="x3" Blabla
(perfect would be:
Bla class="x1 x2 x3" otheratr="y0" Blabla)

one-pass solution:

s/(?<=class=")([^"]*)"\s*class="/$1 /g;

But for smaller files with few iterations the while-loop solution is faster, probably because of the lookbehind operator.

1 while $s1 =~ s/class=\"([^\"]*)\"\s*class=\"([^\"]*)\"/class="$1 $2"/g;

Thx again,
Jaikov