Wenn die „g“ und „s“ Optionen sind nicht wirklich Ihre Aufgabe notwendig und man eigentlich nur den ersten passenden Teil vergleichen will, können Sie einen einzeiligen Test machen, wie folgt:
if (($a =~ /regex1/)[0] == ($b =~ regex2/)[0]) {
...
Und wenn Sie müssen wissen, was die beiden abgestimmten Saiten waren, fügen Sie einfach einige temporäre Variablen, sie zu halten:
if (($first = ($a =~ /regex1/)[0]) == ($second = ($b =~ regex2/)[0])) {
...
Aber wenn Sie wirklich wollen, dass alle der aufeinander folgenden Spiele vergleichen in jede Zeichenfolge, um zu sehen, ob jedes Paar gleich ist, gibt es keine einzige Aussage Lösung, die ich mir vorstellen kann, wird es tun. Ihre Regexes geben jeweils eine Liste zurück und "==" vergleicht nur ihre Längen. Sie müssen die erste vorgeschlagene Lösung verwenden und den Vergleichscode in "long-hand" schreiben.
Die zweite Lösung wird über nicht funktionieren, da es Tests hält nur die erste Übereinstimmung in jeder Saite.
Es ist ein bisschen schwer zu verstehen, was Sie versuchen, das „i“ -Option auf dem ersten Test für/(\ d +)/zu tun, aber Sie zumindest fallen könnten. Vermutlich wird die Option "s" nur für die zweite Zeichenfolge benötigt, da Sie nach eingebetteten neuen Zeilen suchen.
'/ is' hat keine Bedeutung in über reguläre Ausdrücke –
ich nicht absolut sicher bin, aber ich denke, OP regex Spiele in Skalarkontext sind - damit sie Iteratoren machen. Als passende einen Booleschen Wert in Skalarkontext zurückgibt, die '==' ist eigentlich nur ein '' && ohne Kurzschlüsse. – amon
Ich glaube, Sie über Iteratoren recht –