Schrift
[thread]6710[/thread]

RDW 01/05 fuer Anfaenger: Date: 16.02.2005 (Seite 2)

Tags: Ähnliche Threads

Leser: 2


<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten
Crian
 2005-02-16 20:43
#51789 #51789
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Die RDW's sind letztlich mangels Beteiligung eingeschlafen. Vielleicht gelingt es uns ja jetzt, sie auf einem leichteren Niveau wieder aufleben zu lassen.
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
s_a_g_a_t
 2005-02-16 22:22
#51790 #51790
User since
2005-02-14
6 Artikel
BenutzerIn
[default_avatar]
Noch ne kurze frage zu der Aufgabe...
Soll die Stringzerlegung durch zuweisung der einzelnen Strings in Variablen erfolgen
oder kann ich frei entscheiden ob ich zb. mit substr oder so rumwerkeln?
renee
 2005-02-17 00:24
#51791 #51791
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
TIMTOWTDI...

Das Ziel ist die Hauptsache! Wenn Dein Programm die Angaben macht, die Rambo genannt hat, ist alles klar!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2005-02-17 11:36
#51792 #51792
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Aber

Code: (dl )
1
2
3
4
5
6
7
8
9
print <<END;
LF = F:
TAR = OFFLINE
SHORT_TAR = OFF
SYS = SERVER
VER = 2020202
INST = IA01
PORT = 2010
END


zählt nicht ;)
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
Rambo
 2005-02-17 11:45
#51793 #51793
User since
2003-08-14
803 Artikel
BenutzerIn

user image
erwischt :-(

***grins***
Rambo
 2005-02-19 11:47
#51794 #51794
User since
2003-08-14
803 Artikel
BenutzerIn

user image
habe die beitraege ins wiki gestellt, hoffentlich habe ich es richtig gemacht
Crian
 2005-02-21 18:31
#51795 #51795
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Sieht doch ganz in Ordnung aus. Hier ist der Link für alle, die es sonst nicht finden:

http://wiki.perl-community.de/bin/view/Wissensbasis/RaetseL20050216
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
Crian
 2005-02-21 18:42
#51796 #51796
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=Rambo,19.02.2005, 10:47]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
      if ($port eq "2010")
{
$portmap = "3100";
}
elsif ($port eq "2020")
{
$portmap = "3200";
}
elsif ($port eq "2030")
{
$portmap = "3300";
}
elsif ($port eq "2040")
{
$portmap = "3400";
}
elsif ($port eq "2050")
{
$portmap = "3500";
}
elsif ($port eq "2060")
{
$portmap = "3600";
}
elsif ($port eq "2070")
{
$portmap = "3700";
}
[/quote]
Das schreit danach, eleganter gemacht zu werden. Möglichkeit 1:

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


Möglichkeit 2:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
    my %aus = (2010 => 3100,
2020 => 3200,
2030 => 3300,
2040 => 3400,
2050 => 3500,
2060 => 3600,
2070 => 3700,
);
$portmap = exists $aus{$port}
? $aus{$port}
: $port;
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
Rambo
 2005-02-22 10:45
#51797 #51797
User since
2003-08-14
803 Artikel
BenutzerIn

user image
und ich dachte schon da kommt nix mehr :-)
die von mir gewaehlte loesung ist wohl aus den zeiten
der batch progrm. gekommen :-) allerdings gebe ich zu das
ich es nicht besser hinbekommen habe.
ich habe mir auch renees code sehr genau angesehen und
jetzt auch deine beiden moeglichkeiten, zu moeglichkeit 1
kann ich leider gar nicht sagen weil ich das noch nicht verstanden
haben. zu der 2ten moeglichkeit geht es nicht viel anders
das muss ich erst mal nachlesen was dies alles bedeutet :-)
trotzdem habe ich einiges schon wieder gelernt bei dem raetsel :-)
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
<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten



View all threads created 2005-02-16 10:46.