Schrift
[thread]6994[/thread]

Startscript: Kleines Problem mit meinen Ideen ein Tea (Seite 2)

Leser: 1


<< |< 1 2 3 4 >| >> 35 Einträge, 4 Seiten
BoSSSpy
 2005-05-15 22:50
#54942 #54942
User since
2005-05-15
11 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich werde das gesammte Script veröffentlichen wenn's Fertig ist ... das wird aber noch nen paar Stunden dauern ...
Da is deutlich zusehn das der goto befhel seeeehr Pratisch ist.

Ma noch ne Frage:

wenn ich z.b.

if ($bla eq '1,8,7,9,10,Ja,JA,ja,bla') {Aktion;}

geht das? oder gib's ne andere Möglichkeit ... bei mir Hauts nicht hin.


PS.: Der Smili gehört da nicht hin\n\n

<!--EDIT|BoSSSpy|1116183040-->
Bei Fragen, fragen.
coax
 2005-05-15 23:09
#54943 #54943
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=BoSSSpy,15.05.2005, 20:50]
Code: (dl )
if ($bla eq '1,8,7,9,10,Ja,JA,ja,bla') {Aktion;}

geht das? oder gib's ne andere Möglichkeit ... bei mir Hauts nicht hin.
[/quote]
Du koenntest so auf eine Menge von moeglichen Werten pruefen:
Code: (dl )
1
2
3
4
5
6
7
8
my(@array) = qw(1 7 8 9 10 ja Ja JA bla);
if ( grep $string eq $_, @array ) {
   # do sth
}
# oder etwas kuerzer...
if ( grep $string eq $_, qw(1 7 8 9 10 ja Ja JA bla) ) {
   # do sth
}

oder du pruefst mit einer umstaendlichen Regexps
Code: (dl )
1
2
3
if( $string =~ /^1|7|8|9|10|ja|Ja|JA$/ ) {
   # do sth
}

edit: um diese Methode nicht auszulassen...
Code: (dl )
1
2
3
if( $string eq '1' || $string eq '7' || $string eq '8' || $string eq '9' || $string eq '10' || $string eq 'ja' || $string eq 'Ja' || $string eq 'JA' ) {
   # do sth
}


Und statt auf alle moeglichen Schreibvariante ( also ja, Ja, JA ) testen zu muessen, kannst du auch mit lc oder uc arbeiten (bzw. mit dem i-Modifier (ignore case) bei Regexps m/PATTERN/i), das Bsp. von oben wuerde dann so aussehen
Code: (dl )
1
2
3
4
my(@array) = qw(1 7 8 9 10 ja bla);
if ( grep lc $string eq $_, @array ) {
   # do sth
}

siehe dazu:
perldoc -f lc

Quote
PS.: Der Smili gehört da nicht hin

Dann solltest du code-Tags verwenden, dann passiert so etwas nicht ;) .

PS: Das goto solltest du wirklich durch etwas Aequivalentes ersetzen!\n\n

<!--EDIT|coax|1116184775-->
,,Das perlt aber heute wieder...'' -- Dittsche
BoSSSpy
 2005-05-16 00:03
#54944 #54944
User since
2005-05-15
11 Artikel
BenutzerIn
[Homepage] [default_avatar]
Weis jemand wo ich da nen fehler gemacht haben soll?


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#COUNTERSTRIKEMENU HV b2 NV bslot,bmap

counterstrike:
print "\n\n\n\n\n\n========================\nWaehlen sie aus was sie möchten? \n (1) CounterStrike S. Starten Manuell\n (2) CounterStrike S. Stoppen\n (3) CounterStrike Vordefiniert\n (4) Zurück\n";
print "Eingabe: ";
$b2=<>;
chop ($b2);
if (b2 eq '1')
{
print "Um CounterStrike zu starten brauch der Server einige Daten, folgenden sie den Anweisungen!\n\n";
check1:
print "Frage 1 : Wieviel Slot's?\n";
print "Eingabe: ";
$bslot=<>;
chop ($bslot);
if ($bslot gt '32') {print"\n\n\n\n\n\n FEHLER! MAXIMALEANZAHL VON SLOTS is 32!"; goto check1;}
print "\nVielen dank\n\nFrage 2: Welche zustarten Standart Map?\n\n\nMapliste:\n\nfy_poo_day\nde_train\nde_dust\nde_dust2\ncs_assault\nde_nuke\ncs_italy\n";
print "Eingabe: ";
$bmap=<>;
chop ($bmap);
print "\n\n\n Vielen dank, bitte überprüfen sie alle Daten:\n";
print "Zustarten: CounterStrike Manuell\nSlots: $bslot\nMap: $bmap\n\n\nSind diese Information Richtig?\n\n(1)Ja\n(2)Nein,Korrektur\n(3)Abbruch\n";
print "Eingabe: ";
$brichtig=<>;
chop ($brichtig);
if ($brichtig eq '1') {print "\nDer Server wird jetzt gestartet!"; chdir '/home/COUNTERSTRIKE/COUNTERSTRIKE/COUNTERSTRIKE'; print qx'screen ./hlds_run -game cstrike +maxplayers $bslot +map $bmap'; print "\n\n\nCounterStrike Manuell wirdgestartet!\n\n"; exit;}
elsif ($brichtig eq '2') {goto check1;}
elsif ($brichtig eq '3') {goto counterstrike;}
else ($brichtig gt '4') {print "FALSCHE EINGABE!\n"; goto counterstrike;}
}

elsif ($b2 eq '2')
{
print "\nDiese Funktion wird noch bearbeitet\n\n\n"; goto counterstrike;
}

elsif ($b2 eq '3')
{
print "\nDiese Funktion wird noch bearbeitet\n\n\n"; goto counterstrike;
}

elsif ($b2 eq '4')
{
goto main;
}

else ($b2 gt '4')
{
print "FALSCHE EINGABE!\n"; goto counterstrike;
}
\n\n

<!--EDIT|BoSSSpy|1116187477-->
Bei Fragen, fragen.
BoSSSpy
 2005-05-16 00:06
#54945 #54945
User since
2005-05-15
11 Artikel
BenutzerIn
[Homepage] [default_avatar]
Danke Coax ... auf einige Tipp's wär ich ganicht gekommen ... z.b. || ... das find ich am besten ;-]

Danke
Bei Fragen, fragen.
coax
 2005-05-16 01:29
#54946 #54946
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=BoSSSpy,15.05.2005, 22:03]Weis jemand wo ich da nen fehler gemacht haben soll?[/quote]
Bevor wir antworten koennen muesstest du uns erstmal sagen was fuer ein Fehler/Fehlverhalten auftritt und am besten mal dein Script ein bisschen aufraeumen - ist fuer uns nicht wenig Arbeit, es aufzuraeumen, um da erstmal durchzusteigen.

Hilfreich dabei koennen zum Beispiel die Here-Dokumente sein. Fuer
Code: (dl )
  print "\n\n\n\n\n\n========================\nWaehlen sie aus was sie möchten? \n (1) CounterStrike S. Starten Manuell\n (2) CounterStrike S. Stoppen\n (3) CounterStrike Vordefiniert\n (4) Zurück\n";

wuerde man dann
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
  print <<EOBANNER;




========================
Waehlen sie aus was sie möchten?
(1) CounterStrike S. Starten Manuell
(2) CounterStrike S. Stoppen
(3) CounterStrike Vordefiniert
(4) Zurück

EOBANNER

schreiben, das ist dann schon man wesentlich uebersichtlicher. Das abschlieszende Zeichenfolge 'EOBANNER' muss am Anfang der Zeile stehen und dahinter darf nichts folgen (auch kein Leerzeichen etc.).

Alternativ geht auch
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
print '
Text
';

# oder interpoliert
print "
$text
";

# oder die aequivalenten ... wobei das Zeichen (hier ~) _freiwaehlbar_ ist
print q~

~;


Dokumentation darueber findest du in
perldoc perlop      fuer die Here-Dokumente im Abschnitt: <<EOF
,,Das perlt aber heute wieder...'' -- Dittsche
BoSSSpy
 2005-05-16 03:13
#54947 #54947
User since
2005-05-15
11 Artikel
BenutzerIn
[Homepage] [default_avatar]
OK OK ich hab den Fehler gefunden...
Es war nur ein ganz Dummer ... . Es ist immer ein Syntax fehler Aufgetretten. Und der Interpreter hat mir immer ne Falsche Zeile Angezeigt, wo alles Richtig war.

Statt
Code: (dl )
If
hab ich Versehntlich
Code: (dl )
elsif
, weiter unten geschreiben ... Allerdings versteh ich nicht was falsch daran sein soll, dass ich nach einer
Code: (dl )
If 
abfrage kein
Code: (dl )
else
abfrage stellen darf ... ich habs einfach in eine
Code: (dl )
elsif
umgewandelt ...

Kennt jemand ausser Perlide ne Gute Entwicklungshilfe?
Wo z.b. die {}-Klammern immer überprüft werden?\n\n

<!--EDIT|BoSSSpy|1116201711-->
Bei Fragen, fragen.
J-jayz-Z
 2005-05-16 04:29
#54948 #54948
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
am besten schreibst du den code etwas leserlicher...
etwa so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if ($brichtig eq '1') 
{
print "\nDer Server wird jetzt gestartet!";
chdir '/home/COUNTERSTRIKE/COUNTERSTRIKE/COUNTERSTRIKE';
print qx'screen ./hlds_run -game cstrike +maxplayers $bslot +map $bmap';
print "\n\n\nCounterStrike Manuell wirdgestartet!\n\n";
exit;
}
elsif ($brichtig eq '2')
{
goto check1;
}
elsif ($brichtig eq '3')
{
goto counterstrike;
}
else ($brichtig gt '4')
{
print "FALSCHE EINGABE!\n";
goto counterstrike;
}
}

so kann man doch viel gemütlicher nach Fehlern suchen...
Wenn du unbedingt einen einzeiler schreiben willst, schau mal, wie man mit perl -e umgeht *g
Kannst du auch mal den ganzen Code posten?
Ist dann vielleicht einfacher, den Fehler zu finden...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
J-jayz-Z
 2005-05-16 04:31
#54949 #54949
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Dazu kannst du auch einen guten Editor (gvim) verwenden.
Wenn du über einer Klammer bist, und wissen willst, wo das gegenstück ist, drückst du einfach = und das teil hüpft da hin.
Aber man muss sich seine kleinen Helferlein da schon selbst aussuchen...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
BoSSSpy
 2005-05-16 05:48
#54950 #54950
User since
2005-05-15
11 Artikel
BenutzerIn
[Homepage] [default_avatar]
Danke für den tipp.




PS.: Kann es sein das die Uhr hier ufm Server nach geht?\n\n

<!--EDIT|BoSSSpy|1116208164-->
Bei Fragen, fragen.
pKai
 2005-05-16 13:38
#54951 #54951
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Die Codeformatierung à la J-jayz-Z würde ich mir nicht angewöhnen, die sind ... sagen wir mal ... ziemlich non-Standard.
Besser du führst dir mal perlstyle (deutsch!) zur Gemüte.
I sense a soul in search of answers.
<< |< 1 2 3 4 >| >> 35 Einträge, 4 Seiten



View all threads created 2005-05-15 07:04.