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

Beitrag lesen

Moin!

$string =~ s/(.)/chr((ord($1) > 250 || ord($1) < 5) ? (ord($1) > 250 ?  (ord($1) - 250) : (ord($1) + 250)) : (ord($1) - 5))/eg;

Mmh.. Du musst Dich schon entscheiden, ob Du nun 5 addieren oder subtrahieren willst. Fuer den Fall der Subtraktion schlage ich diese kleine Optimierung vor (untested):

$string =~ s/(.)/chr((ord($1) + 256 - 5) & 0xFF)/eg;

(Die Addition von 256 soll einen Unterlauf unter 0 vermeiden. Normalerweise sollte das nicht noetig sein, aber wer weiss, was auf irgendeiner exotischen Plattform alles passieren kann.)

So long