Thread Ersetzungstring mit $1 im Voraus "kompilieren" (5 answers)
Opened by GwenDragon at 2012-02-15 16:00

GwenDragon
 2012-02-15 16:44
#156140 #156140
User since
2005-01-17
14538 Artikel
Admin1
[Homepage]
user image
Quote
wenn 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
Code: (dl )
1
2
3
4
5
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 pq
in 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)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

View full thread Ersetzungstring mit $1 im Voraus "kompilieren"