Thread split funktion (7 answers)
Opened by Gast at 2006-04-11 13:29

Strat
 2006-04-11 16:27
#64713 #64713
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
chop nie verwenden, um zeilenumbrueche am ende abschneiden; dafuer gibts chomp

vielleicht folgendermaszen? (bin mir nicht sicher, ob ich die aufgabenstellung korrekt verstehe)
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
my $filename = "xyz.txt";

# 1. Datei zum lesen oeffnen
# beim open immer fehler abfangen, sonst geht spaeter mal was
# schief und man sucht an der falschen stelle
open (my $FH, "<", $filename)
or die "Error: couldn't read file '$filename': $!\n";

# 2. Dateiinhalt in ein Array einlesen
# und eventuell zeilenumbrueche am ende wegwerfen
my @lines = <$FH>;
chomp(@lines);

# 3. Datei schliessen
close ($FH);

4. Datei in einen String verwursten
my $text = join(" ", @lines); # besser als "@lines", weil unabhaengig von $"


# stattdessen kann man auch schreiben:
# my $text = do {
# open (my $FH, "<", $filename) or die $!;
# local $/; # undef
# my $text = <$FH>;
# close $text; # eigentlich mit my $FH ueberfluessig
# $text; # zurueckgeben
# };
# nur wird halt da nicht mit einem leerzeichen gejoined, sondern
# die zeilenumbrueche bleiben drinnen stehen; das kann man
# aber mit $text =~ s/\n/ /g; korrigieren


# 5. an einer bestimmten stelle aufsplitten
my @parts = split(/[Dd]u/, $text);

# schleife mit index
foreach my $i (0..$#parts) {
print "This: $part[$i]\n";

if ($i < $#parts) {
print "Next: ", $part[$i+1], "\n";
}
else {
print "Next: ### EOF erreicht ###\n";
}
} # foreach
\n\n

<!--EDIT|Strat|1144758601-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread split funktion