Schrift
[thread]9092[/thread]

while + STDIN



<< >> 8 Einträge, 1 Seite
RPerl
 2007-06-16 11:31
#77565 #77565
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Hallo ihr Perl-Spezialisten!

Ich hab mal wieder eine Frage und zwar wollte ich ueber STDIN solange einlesen bis im STDIN das Woertchen 'exit' vorkommt.
Ich hab das so gemacht, aber irgendwie glaube ich, dass es total unsauber und unschoen ist!:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use strict;
use warnings;

my ($string);

while($string ne 'exit') {
$string = <STDIN>;
last if $string =~ /exit/;
}


Da bekomme ich auch einen Fehler:

Code: (dl )
Use of uninitialized value in string ne at stdin.pl line 8.


Wie kann man sowas besser,sauberer (ohne regex?) machen? :?

Danke und Gruß,

rPerl\n\n

<!--EDIT|RPerl|1181979126-->
GwenDragon
 2007-06-16 12:21
#77566 #77566
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;

my ($string) = '';

while (1) {
  $string = <STDIN>;
  chomp($string);
  last if ($string eq 'exit');
}
\n\n

<!--EDIT|GwenDragon|1181986396-->
RPerl
 2007-06-16 12:30
#77567 #77567
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Danke! :)
GwenDragon
 2007-06-16 13:34
#77568 #77568
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Da fehlt noch ein chomp. Hatte ich vergessen (siehe geänderter Code). :blush:
RPerl
 2007-06-16 14:01
#77569 #77569
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Geht das auch ohne?
Dubu
 2007-06-16 14:07
#77570 #77570
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Dann musst du daran denken, dass an deinem $string immer noch ein Newline hängt. Das heißt auch, dass du statt auf Gleichheit mit "exit" auf "exit\n" prüfen musst.
MisterL
 2007-06-16 14:12
#77571 #77571
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Natürlich geht es auch ohne chomp:
Code: (dl )
#chomp($string);

Nur reagiert das Programm dann nicht mehr auf die Abfrage von wg. 'exit'
Und wenn sie nicht gestorben sind, geben sie heute noch Text ein...

Nachtrag: getestet mit XP und ActivePerl\n\n

<!--EDIT|MisterL|1181988798-->
“Perl is the only language that looks the same before and after RSA encryption.”
shigetsu
 2007-06-17 14:24
#77572 #77572
User since
2007-04-22
16 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;

my $string;

do {
chomp($string = <STDIN>);
# do stuff
print "entered: $string\n";
} until ($string eq 'exit');
<< >> 8 Einträge, 1 Seite



View all threads created 2007-06-16 11:31.