1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/usr/bin/perl use strict; use warnings; print "\nGeben sie den zu sortierenden Text ein.\n"; my @data = <STDIN>; #das folgende ist für das sortieren der daten #was was macht findest du in einem kommentar am rand #das ist nur ein coden schnipsel der später mit dem vollständigen code kombiniiert wird #print $data [1]; #print $data [0]; @data = sort { $a cmp $b } @data; #sortiert das array alphabetisch foreach (@data){ #schreibt den sortierten text print $_ ; #in eine textdatei } #
2014-02-14T11:52:31 LinuxerHi,
Wenn eine leere Zeile eingegeben wurde, beende die Schleife und mache mit dem Skript weiter.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#!/usr/bin/perl use warnings; use strict; # Kruemelmonster my $kekse = ""; while ($kekse ne "KEKSE") { print 'ich will KEKSE: '; $kekse = <STDIN>; chomp($kekse); } print "Mmmm. KEKSE.\n";
1 2 3 4 5 6
my @data; while ( my $line = <STDIN> ) { chomp $line; last if $line eq ''; # nicht: ... if ! $line, da '0' zu FALSE evaluiert push @data, $line; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
use strict;
use warnings;
print "\nGeben sie den zu sortierenden Text ein.\n";
my @data; #das array
while ( my $line = <STDIN> ) { #while schleife
chomp $line; #
last if ! $line; #
push @data, $line; #
}
@data = sort { $a cmp $b } @data; #sortiert das array
foreach (@data){
print "$_\n" ;
}
2014-02-17T11:54:00 Muffiwhile ( my $line = <STDIN> ) { suggeriert beim Lesen eine Abbruchbedingung, ist aber keine. Dann würd ich das auch klar machen.
perldoc perlop...
The following lines are equivalent:
Code (perl): (dl )1 2 3 4 5 6 7while (defined($_ = <STDIN>)) { print; } while ($_ = <STDIN>) { print; } while (<STDIN>) { print; } for (;<STDIN>;) { print; } print while defined($_ = <STDIN>); print while ($_ = <STDIN>); print while <STDIN>;
This also behaves similarly, but assigns to a lexical variable instead of to $_ :
Code (perl): (dl )while (my $line = <STDIN>) { print $line }
In these loop constructs, the assigned value (whether assignment is automatic or explicit) is then tested to see whether it is defined. The defined test avoids problems where the line has a string value that would be treated as false by Perl; for example a "" or a "0" with no trailing newline. If you really mean for such values to terminate the loop, they should be tested for explicitly:
Code (perl): (dl )1 2while (($_ = <STDIN>) ne '0') { ... } while (<STDIN>) { last unless $_; ... }
In other boolean contexts, <FILEHANDLE> without an explicit defined test or comparison elicits a warning if the use warnings pragma or the -w command-line switch (the $^W variable) is in effect.
2014-02-17T11:54:00 MuffiUnd das 2. ist, dass "! $line" z.B. auch bei "0" zutrifft. Ich würd zumindest ein "length($line)" nehmen