Thread RDW 01/05 fuer Anfaenger: Date: 16.02.2005 (20 answers)
Opened by Rambo at 2005-02-16 10:46

Crian
 2005-02-22 16:55
#51798 #51798
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Möglichkeit 1 macht eigentlich das, was Du weiter oben in Worten beschrieben hast:

[quote=Rambo,16.02.2005, 10:26]was die ports betrifft gibt es nur die regel das 20xx durch 3xxx[/quote]

Code: (dl )
my $portmap = 3000 + ($port-2000)*10;


Ich entferne die 2 vorne (-2000), verschiebe eine Stelle nach links (*10) und schreibe dann wieder eine 3 davor (+ 3000).

Man könnte auch sowas wie

Code: (dl )
my $portmap = '3' . substr($port, 2, 2) . '0';


machen...


Zur zweiten Lösung:

Ich erstelle erst ein Hash, das als Schlüssel die alten Ports und als Werte die neuen Ports enthält. Dann setze ich $portmap in einer Schleife auf den im Hash abgelegten Wert, falls $port dort als Schlüssel vorhanden ist. Falls es das nicht ist, kopiere ich $port einfach nur in $portmap.

Für die sieben hier vorkommenden Ports machen die beiden Lösungen das gleiche, für andere Ports verhalten sie sich unterschiedlich, da die erste Lösung auch an diesen herumändert, während die zweite Lösung diese nicht umsetzt.


Ganz exakt Deine Worte umsetzen würde wohl

Code: (dl )
1
2
3
4
5
6
7
my $portmap;
if ($port > 1999 and $port < 2100) {
$portmap = '3' . substr($port, 2, 2) . '0';
}
else {
$portmap = $port;
}
\n\n

<!--EDIT|Crian|1109084383-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread RDW 01/05 fuer Anfaenger: Date: 16.02.2005