Quotewenn du das "evaluieren" willst, musst du mit /ee bzw. eval arbeiten. das geht natürlich nur, wenn du weisst, dass der string "sicher" ist.
Mit ee hatte ich es vorher auch probiert, ich bin nur nicht drauf gekommen, was Perl mir mit
Use of uninitialized value $_ in pattern match (m//) at (eval 1) line 1, <DATA> line 4.
Use of uninitialized value in substitution iterator at videotag.pl line 46, <DATA> line 4.
Scalar found where operator expected at (eval 3) line 1, near "/embed/$1"
(Missing operator before $1?)
Use of uninitialized value in substitution iterator at videotag.pl line 46, <DATA> line 4.
sagen wollte.
Und sicher ist das m. E. mit den angegebenen Regexes, weil $1 ja in dem Fall nur aus Ziffern besteht und somit
wie z. B. bei
qr'\/watch\/(\d+)\/.+' zu sehen ist, was dann bei einer URL
/watch/1234567/blah_blubb ja durch den Ersetzungsstring
'"/embed/$1"' zu
/embed/1234567 wird.
Würde nicht auf (\d+) getestet sondern auf (.+) wäre das ein Einfallstor.
Aber riskant sind solche Evals schon, da hast du Recht.
2012-02-15T15:15:08
pqin dem string steht ja nur dollar 1, nicht der wert von $1.
So ein Mist, ich weiß jetzt was ich da vergaß. Ich habe den Ersetzungsstring auch falsch gequotet, der muss für ee ja zusätzlich in "" stehen.
Ich muss wohl mit meinen Hühneraugen den Code angesehen haben. ;)
Last edited: 2012-02-15 16:46:01 +0100 (CET)