Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8212[/thread]

mit perlscript ein perlscript in einem unterordner: perlscript in unterordner öffnen

Leser: 1


<< >> 6 Einträge, 1 Seite
Rafael
 2006-08-02 13:04
#68501 #68501
User since
2006-07-26
22 Artikel
BenutzerIn
[default_avatar]
kann mir jemand sagen, wie ich das zum laufen bringe???
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
use warnings;
use strict;
my $option = 1;

while ($option != 0){
print "Please select:\n\n";
print "1 Deutsch\n";
print "2 English\n";
print "0 Exit\n";
print "\nYou've selected: ";
$option = <STDIN>;
print "\n";
if ($option == 0){
print "You've choosen!\n";
};
if ($option == 1){
#Hier müsste der Fehler sein!!!
qx(/de/index_de.pl);
};
if ($option == 2){
qx(/en/index_en.pl);
};
};
\n\n

<!--EDIT|renee|1154516488-->
Ronnie
 2006-08-02 13:17
#68502 #68502
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Evtl. ist der führende / zu viel?!
nepos
 2006-08-02 13:19
#68503 #68503
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, du sagst nicht genau, was nicht klappt, aber ich vermute mal, dein Problem liegt an den Pfaden.
Ich denke, du hast in dem Verzeichnis, in dem dein Hauptskript liegt 2 Unterverzeichnisse de und en, in denen die anderen Skripten sind. Mit
Code: (dl )
/de/index_de.pl
sprichst du aber ein Verzeichnis de an, das direkt im root-Verzeichnis liegt.
Versuch es doch mal mit
Code: (dl )
qx(de/index_de.pl);
oder
Code: (dl )
qx(./de/index_de.pl);
.

Ausserdem bin ich mir nicht sicher, ob qw// die richtige Wahl ist. Denn du fuehrst damit zwar die Skripten aus, den Output verwirfst du aber. Schau dir das mal in der Hilfe an. Wenn du wirklich ein anderes Skript anstossen willst und das dann die Kontrolle haben soll, dann waere meiner Meinung exec() das, was du nutzen solltest.
vayu
 2006-08-02 13:20
#68504 #68504
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
!!!!!!!!

dass die leute immer Satzzeichen zuviel haben :0
renee
 2006-08-02 15:15
#68505 #68505
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du solltest etwas besser erklären, was Du angezeigt bekommst und was Du gerne angezeigt bekommen würdest. Wenn Du den Output der Skripte angezeigt bekommen willst, dann solltest Du das auch ausgeben:
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
use warnings;
use strict;
my $option = 1;

while ($option != 0){
print "Please select:\n\n";
print "1 Deutsch\n";
print "2 English\n";
print "0 Exit\n";
print "\nYou've selected: ";
$option = <STDIN>;
print "\n";
if ($option == 0){
print "You've choosen!\n";
}
elsif ($option == 1){
#Hier müsste der Fehler sein!!!
my $de_result = qx(/de/index_de.pl);
print $de_result;
}
elsif ($option == 2){
my $result = qx(/en/index_en.pl);
print $result;
}
}


Dann solltest Du noch elsif verwenden als etliche Male if. Die Variable kann nur einen Wert haben. Wenn es bei einer Bedingung zutrifft, muss man die restlichen Bedingungen nicht mehr überprüfen!
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/
topeg
 2006-08-02 22:37
#68506 #68506
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
So sollte es funktionieren.
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
use warnings;
use strict;
my $option = 1;

while ($option != 0){
print "Please select:\n\n";
print "1 Deutsch\n";
print "2 English\n";
print "0 Exit\n";
print "\nYou've selected: ";
$option = getc(STDIN);
$option = 0 if($option=~/\D/);
print "\n|$option|\n";
if ($option == 0){
print "You've choosen!\n";
}
elsif ($option == 1){
qx(/de/index_de.pl);
}
elsif ($option == 2){
qx(/en/index_en.pl);
}
}

Zu deinen Fehleren:
1. Wenn man mit "<>" oder "readline" von einem Filehandle liest wird auch das Zeilenende z.B "\n" mitgeliefert.
2. Es ist nicht immer gesagt, das es sich bei den Eingaben um Zahlen handelt. Wenn man warnings benutzt gibt es unter Umständen eine Warnung, da man Buchstaben nicht wie Zahlen vergleichen kann.
3. Es können auch mehrere Zeichen eingeben werden, das sollte auch abgefangen werden.

Meine Variante ist recht simpel und gührt immer zum Ende wenn das erste eingebene Zeichen keine Zahl ist.
<< >> 6 Einträge, 1 Seite



View all threads created 2006-08-02 13:04.