Thread Variablen in reg. Ausdrücken (s#$from#$to#g) (9 answers)
Opened by Gast at 2006-07-17 19:48

betterworld
 2006-07-18 01:18
#68178 #68178
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Man könnte es auch so machen:
Code: (dl )
1
2
3
4
5
6
$file = "10abc.txt";
$from = "(\\d\\d).+?(\\.\\w+)";
$to = '$1$2';
$to = "qq#$to#";
$file =~ s/$from/$to/gee;
print $file, "\n";

Das ist im Prinzip auch nichts anderes als eval und daher genauso gefährlich.

Beachte die doppelten Backslashes in $from. Die sind nur da, weil "\d" sonst zu "d" wird. Wenn man den Code so schreibt wie Du, verschwinden die Backslashes sofort:
Code: (dl )
1
2
3
$from = "(\d\d).+?(\.\w+)";
print $from, "\n";
# Ausgabe: (dd).+?(.w+)

Wenn $from eine Benutzereingabe ist, ist es natuerlich nicht notwendig, doppelte Backslashes zu verwenden.

View full thread Variablen in reg. Ausdrücken (s#$from#$to#g)