Thread Auslesen aus .txt bis Trennzeichen, wie?: Auslesen aus .txt bis Trennzeichen, wie? (51 answers)
Opened by Gast at 2005-10-26 14:09

duerov
 2005-11-03 11:23
#59366 #59366
User since
2005-10-26
27 Artikel
BenutzerIn
[default_avatar]
Guten Morgen, ich bins nochmal!
Nachdem leider alles nichts gefruchtet hat hab ich alles weggehauen und versuchs jetzt nochmal von vorne. Mit dem ersten Codeblock formatiere ich folgende .txt:
"Firma 1 A";1234;"91673627385";"03"
"Firma 2 B";1234567;"78112965628";""
"Firma 3C";7654321;"";"01"
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!D:/Perl/

use strict;
use warnings;

open(DATA,"neu-1.txt") or die "Konnte File nicht oeffnen\n";
while (<DATA>)
{
chomp;
my @row = split /;/, $_; # Bei; wird getrennt
@row = map { s/"/ /g; $_ } @row; # Ersetzt " durch 'Leerzeichen'

open(DATEI,">>datei.txt") || die "File nicht gefunden";
if ("$row[3]" =~ /01/ || "$row[3]" =~ /02/ || "$row[3]" =~ /03/)

{

Mit dem zweiten Codeblock wollte ich mir nur mal die letzten Zahlen (hier 03 und 01) sortiert ausgeben bzw. wenns funktionieren würde eintragen, geht aber nicht.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for($row[3])
{
my @sortierung = sort NummernSort $row[3];
for (@sortierung)
{

print $_,"\n";
}
}

sub NummernSort
{
if($a < $b)
{ return -1; }
elsif($a == $b)
{ return 0; }
else
{ return 1; }
}

Im dritten Codeblock formatiere ich meine .txt damit sie so aussieht:
Firma 1 A 1234 91673627385 03
Firma 3C 7654321 01
Allerdings sollte das halt nach den letzten Zahl sortiert sein:
Firma 3C 7654321 01
Firma 1 A 1234 91673627385 03
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
for($row[0])
{
$_ =~ s/^\s+//g; # Leerzeichen am Anfang entfernen
print DATEI "$_";
}
for($row[1])
{
$_ =~ s/^\s+//g;
$_ = sprintf("%07i",$_); # Von links auf 7 Stellen mit Nullern auffüllen
print DATEI "$_";
}
for($row[2])
{
print DATEI "$_";
}
for($row[3])
{
$_ =~ s/^\s+//g; # Leerzeichen am Anfang entfernen
print DATEI "$_";
}
print DATEI"\n";
}
close(DATEI)

}
close(DATA);

Hab es jedenfalls nicht geschaft, dieses dritte Feld ($row[3]) so anzusprechen, dass ich danach sortieren kann. Die in den vorigen Beiträgen genannten Sortierverfahren hab ich auch schon probiert. Das Problem ist, dass mir die Erklärungen in den Tutorials schon klar sind, ich das aber bei dieser Aufgabe einfach nicht auf die Reihe krieg.
Wär schön wenn sich das jemand nochmal anschauen könnte.
Gruß
duerov

View full thread Auslesen aus .txt bis Trennzeichen, wie?: Auslesen aus .txt bis Trennzeichen, wie?