Wenn dieser String echtes HTML ist, dann schlage ich
HTML::Parser oder
HTML::TreeBuilder vor. Wenn es kein echtes HTML ist, muesste man schon genau wissen, wie genau dein "Beispiel" auf alles das passt, was du tatsaechlich suchst.
(HTML ist nicht regulaer und laesst sich deshalb nur schlecht mit regulaeren Ausdruecken parsen.)
Ein sehr simpler Ansatz, der sehr strikt auf dein Beispiel zugeschnitten ist, koennte so aussehen:
if ($str =~ m~<span class="test">(.*?)</span>~) {
print "Im Bereich test steht $1.\n";
}
Das Fragezeichen sorgt dafuer, dass der
kuerzeste String bis zum naechsten "</span>" gesucht wird. Das Muster schlaegt also schon fehl, wenn ein weiteres "<span>...</span>" in dieses geschachtelt ist, kaeme aber mit anderen HTML-Tags innerhalb des <span> klar.