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

Perl Script erst nach aufforderung beenden

Leser: 2


<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten
krusty
 2006-05-09 23:07
#65878 #65878
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
Hi,
nach etwas längere Abwesenheit bin ich wieder mit einer recht simplen Frage für euch zurück. Habe ein Perl Script geschrieben, welches ich in eine .exe datei gewandelt habe. Wenn ich die Datei jetzt in Windows aufrufe wird das Script sofort wieder beendet. Ich hätte aber gerne, das das Programm erst nach einer Eingabe des Users beendet wird. Wie kann ich das machen??
Matze
 2006-05-09 23:19
#65879 #65879
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Dann setz doch vor dem beenden noch ein <STDIN> mit in die Perl
Quelle.

MfG. Matze
Mit freundlichen Grüßen: Matze
betterworld
 2006-05-09 23:20
#65880 #65880
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Du koenntest ans Ende schreiben:
Code: (dl )
<STDIN>;

Irgendwo in den Tiefen der Programmeigenschaftsfenster bei Windows gibt es ein Häkchen "Programm beim Beenden schließen", was Du vielleicht wegmachen moechtest.
krusty
 2006-05-09 23:23
#65881 #65881
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
Habe da jetzt das hier zum Schluss eingefügt.

Code: (dl )
my $stop = <STDIN>;



bekomme aber leider nur ne fehlermeldung. Sorry aber ich bin nicht der beste Perl Programmierer. :(

Code: (dl )
<STDIN>;
alleine geht auch nicht auch nur ne fehlermeldung\n\n

<!--EDIT|krusty|1147203007-->
Relais
 2006-05-09 23:27
#65882 #65882
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie äußert sich "nur ne fehlermeldung"?
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
krusty
 2006-05-09 23:28
#65883 #65883
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
Sieht so aus:

Code: (dl )
1
2
syntax error at C:\Perl\scripts\range_mask.pl line 64, near "STDIN>"
Execution of C:\Perl\scripts\range_mask.pl aborted due to compilation errors.


Habe sowohl
Code: (dl )
use strict;
als auch
Code: (dl )
use warnings;
eingeschaltet.\n\n

<!--EDIT|krusty|1147203047-->
krusty
 2006-05-09 23:36
#65884 #65884
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
Habe den Fehler gefunden. Hatte mal wieder nen Tippfehler drin. Sorry für den unnötigen Ballast im Forum. Danke an alle.
Gehört zwar nicht hier in den Thread aber habe noch nen anderes Problem. Will eine Überprüfung einer Benutzereingabe machen. Die Eingabe kann nur eine IP Adresse sein. Will also prüfen ob nur ziffern angegeben worden sind. Habe dazu folgende Schleife gebaut. Leider funktioniert sie nicht wirklich.

Könnt ihr mal drüber schauen?

Code: (dl )
1
2
3
4
5
6
while ( $range =~ /\d+\.\d+\.\d+\.\d+/ )
{
print "Enter the iprange e.g. 192.168.2.0!\n";
print "IP-range: ";
$range = <STDIN>;
}
murphy
 2006-05-10 00:04
#65885 #65885
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Sollte das nicht eher
Code: (dl )
1
2
3
4
5
6
7
 {
my $range;
do {
$range = <STDIN>;
} while (not ($range =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/));
...
}

heißen?

(edit: logischen Tippfehler korrigiert)\n\n

<!--EDIT|murphy|1147205178-->
When C++ is your hammer, every problem looks like your thumb.
krusty
 2006-05-10 00:16
#65886 #65886
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
Danke für die Hilfe, nur wie bekommt dann der benutzer angezeigt, wenn er einen ungültigen wert bzw. in dem Fall ip adresse eingegeben hat?

Irgendwie verstehe ich das nicht wirklich. Vielleicht ist es schon zu spät aber wie kann ich denn den Benutzer mitteilen, wenn er eine falsche Eingabe gemacht hat, das er sie falsch gemacht hat und dann nochmals die möglichkeit geben eine neue eingabe zu machen?\n\n

<!--EDIT|krusty|1147206043-->
murphy
 2006-05-10 00:49
#65887 #65887
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=krusty,09.05.2006, 21:16]Danke für die Hilfe, nur wie bekommt dann der benutzer angezeigt, wenn er einen ungültigen wert bzw. in dem Fall ip adresse eingegeben hat?[/quote]
Im Moment wird bei meinem Codeschnipsel gar nichts angezeigt -- das war eigentlich als Übung für den Leser gedacht ;-)

Quote
Irgendwie verstehe ich das nicht wirklich. Vielleicht ist es schon zu spät aber wie kann ich denn den Benutzer mitteilen, wenn er eine falsche Eingabe gemacht hat, das er sie falsch gemacht hat und dann nochmals die möglichkeit geben eine neue eingabe zu machen?


Man modifiziere meinen Code zum Beispiel wie folgt:
Code: (dl )
1
2
3
4
5
6
7
8
9
{
my $range;
do {
print 'Die Eingabe war ungueltig -- ' if (defined $range);
print 'Bitte geben sie eine IP-Adresse (z.B.: 1.2.3.4) ein: ';
$range = <STDIN>;
} while (not ($range =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/));
print "Die korrekte Eingabe war: $range\n";
}
When C++ is your hammer, every problem looks like your thumb.
<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten



View all threads created 2006-05-09 23:07.