Cheatah: Mit Perl den ASCII-Wert eines Zeichens ändern

Beitrag lesen

Hi,

$string =~ s/(.)/chr(ord($1)-5)/eg;

mag sein, aber verstehen, wenn man bei regexpr. das überhaupt sagen kann ;-) tut man cheatahs Version am ehesten!

Christians Lösung ist nur eine kleine Verallgemeinerung der meinen.

Bei deiner steigt jeder nicht-auch-nur-halbwegs-perl-Profi wie ich leider voll aus :-(

Schon der nicht-mehr-ganz-so-Perl-Anfänger kann in der Doku nachschlagen, was die einzelnen Teile bedeuten. Es mag zwar ein paar Minuten brauchen, bis Du diese RegExp verstehst, aber ein Geheimnis - oder auch nur kompliziert - ist sie nicht.

Dazu müsste man erst mal wissen, was (.) matcht (Irgendein einzelnes Zeichen?)
und was in $1 drinnenliegt (der gematchte Asudruck??)

Beides erfährst Du erstens in perldoc perlre, und sind zweitens die Grundlagen im Umgang mit Regular Expressions. Ebenso wie die Bedeutung des Parameters /e.

Übrigens, an welcher Ascii-Tabelle orientiert sich Perl, wenn man chr(xxx) aufruft?

Es gibt nur eine ASCII-Tabelle. Das "S" steht für "Standard".

Da sind ja die Zeichenbelegungen ziemlich unterschiedlich, zumindest bei den Sonderzeichen!

Bei allen nicht-ASCII-Zeichen siehst Du die Belegung, wenn Du mal kurz

for (128..255) {
  print $_, "\t", chr($_), "\n";
}

auf die Konsole ausgeben läßt.

Cheatah