Schrift
[thread]8949[/thread]

Zeichenketten aus einer Datei lesen ->: und in einer anderen Datei zufügen (Seite 2)

Leser: 1


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
SimplyFred
 2007-05-22 15:19
#76272 #76272
User since
2006-12-16
25 Artikel
BenutzerIn
[default_avatar]
Hallo nochmal - ich muss nochmal etwas nachfragen, leider kam erst jetzt dieser Fall:

3333;geht ab hier in andere Datei
3334;geht ab hier in andere Datei
3334;geht auch ab hier in die andere Datei

zusätzlich mit Komma getrennt zu dem ersten "3334"

Lässt sich so etwas noch zusätzlich einbauen ?

Momentan wird nämlich der erste Eintrag wohl vermutlich mit dem zweiten "3334" überschrieben

Ich danke schonmal vorab für eine Antwort
PerlProfi
 2007-05-22 19:02
#76273 #76273
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Du könntest z.B. noch einen anon. Array in die Struktur mit reinschieben, für jeden key der Struktur.
Also in datei_lesen:
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
sub datei_lesen($)
{
# pick parameters
my($file) = @_;

...

# key equals the first tract
my $key = shift @tracts;
my $val = [@tracts];

# push data
# HIER die Zuweisung ersetzen
$data{$key} = [] unless exists $data{$key};
push(@{$data{$key}}, $val);
}

# close file
close($fhIN);

# return data reference
return \%data;
} # datei_lesen

Und dementsprechend in datei_schreiben auch eine Zuweisung ändern:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sub datei_schreiben($$)
{
# pick parameters
my($data, $file) = @_;

...

# iterate through the data
foreach my$key (keys %{$data})
{
# create line
# HIER die Zuweisung ersetzen
my $line = $key . '#' . join(',', map { join('#', @{$_}) } @{$data->{$key}});

# write out line
print $fhOUT "$line\n";
}

# close file
close($fhOUT)
or die "close failed: $!";
} # datei_schreiben

Natürlich beim erweitern der Daten auch die push() Zeile verändern:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
# append data
foreach my$key (keys %{$data_to_append})
{
# check whether we can append the data
next if !exists($full_data->{$key});

# append data
# HIER ein push() einfuegen
push(@{$full_data->{$key}->[0]}, @{shift(@{$data_to_append->{$key}})});
push(@{$full_data->{$key}}, @{$data_to_append->{$key}});
}


Hab ich jetzt nicht getestet, sollte aber so funktionieren.

MfG
SimplyFred
 2007-05-23 11:12
#76274 #76274
User since
2006-12-16
25 Artikel
BenutzerIn
[default_avatar]
Wahnsinn ...

Ich werde versuchen den Code an die richtigen Stellen zu setzen (Puuhh - hoffentlich kriege ich das gebacken ...) und probiere es aus.

Erstmal vielen vielen Dank
PerlProfi
 2007-05-23 17:24
#76275 #76275
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Ich hab die Stellen, die du ersetzen musst ja mit HIER markiert, direkt darunter musst du jeweils 1 / 2 Zeilen ändern, ist nicht viel.
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2007-04-26 17:10.