Schrift
[thread]12386[/thread]

einlesen bearbeiten und ausgeben (Seite 3)

Leser: 6


<< |< 1 2 3 4 5 6 ... 8 >| >> 73 Einträge, 8 Seiten
havi
 2008-08-21 15:33
#113820 #113820
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
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
48
#!/usr/bin/perl

use warnings;
use strict;

open(my $fhListe, "<Liste.txt") or die $!;

my %pnr;

while(my $zeile = <$fhListe>) {

chomp $zeile;

my @felder = ();
@felder = split(/ /, $zeile); # teilt deine Liste nach Blank und speichert es in @felder

$pnr{$felder[0]} = $felder[1]; # merkt sich die Daten aus deiner Liste...

} # while

close($fhListe) or die $!;

##############################

open(my $fhDatei, "<Datei.txt") or die $!;
open(my $fhErgebnis, ">Ergebnis.txt") or die $!;

while(my $zeile = <$fhDatei>) {

chomp $zeile;

my @satz = ();
@satz = split(/ /, $zeile); # teilt deine Datei nach Blank und speichert es in @satz

my $ergListe = "!LEER!"; # setzt die Nummer fuer den Ort erstmal auf !LEER!
$ergListe = $pnr{$satz[0]} if defined $pnr{$satz[0]}; # wenn Ort gefunden, wird die Nr gesetzt

# Ausgabe:Nummer deiner Liste-Zahl 3stellig mit 0 davor - Zahl 5stellig mit 0 davor /fixer Wert
print $fhErgebnis $ergListe."-".sprintf("%03d", $satz[2])."-".sprintf("%05d", $satz[4])."/000.00\n";

} # while

close($fhDatei) or die $!;
close($fhErgebnis) or die $!;

print "Fertig.\n";

1;
Gast Gast
 2008-08-21 15:41
#113822 #113822
ok jetzt hab ich es verstanden.. aber ich soll jetzt die nummern für die orte in hash machen.. weil keine extra datei seien soll.. wie geht das ganze dann?
havi
 2008-08-21 15:48
#113824 #113824
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Gast+2008-08-21 13:41:41--
ok jetzt hab ich es verstanden.. aber ich soll jetzt die nummern für die orte in hash machen.. weil keine extra datei seien soll.. wie geht das ganze dann?


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
#!/usr/bin/perl

use warnings;
use strict;

my %pnr;

$pnr{AB} = "052001";
$pnr{AC} = "052025";
$pnr{AD} = "052030";

open(my $fhDatei, "<Datei.txt") or die $!;
open(my $fhErgebnis, ">Ergebnis.txt") or die $!;

while(my $zeile = <$fhDatei>) {

chomp $zeile;

my @satz = ();
@satz = split(/ /, $zeile);

my $ergListe = "!LEER!";
$ergListe = $pnr{$satz[0]} if defined $pnr{$satz[0]};

print $fhErgebnis $ergListe."-".sprintf("%03d", $satz[2])."-".sprintf("%05d", $satz[4])."/000.00\n";

} # while

close($fhDatei) or die $!;
close($fhErgebnis) or die $!;

print "Fertig.\n";

1;
Gast Gast
 2008-08-21 15:56
#113825 #113825
hmm also ich habe das jetzt versucht.. habe alle sachen so umbenannt wie es bei mir heißt.. weil ich die datei jetzt testdaten.txt genannt habe..
mehr müsste ich doch nicht ändern und es müsste funktionieren oder?
macht es nämlich nicht. deshalb die frage muss ich sonst noch was ändern?
havi
 2008-08-21 16:02
#113826 #113826
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Gast+2008-08-21 13:56:11--
hmm also ich habe das jetzt versucht.. habe alle sachen so umbenannt wie es bei mir heißt.. weil ich die datei jetzt testdaten.txt genannt habe..
mehr müsste ich doch nicht ändern und es müsste funktionieren oder?
macht es nämlich nicht. deshalb die frage muss ich sonst noch was ändern?


Hast du das Skript im Verzeichnis wo auch die Datei steht?
Wenn nicht - kopiers mal dorthin, oder trage im Skript den Pfad der
Datei ein

Code: (dl )
open(my $fhDatei, "<c:\\daten\\Datei.txt") or die $!;

Gast Gast
 2008-08-21 16:08
#113828 #113828
ja habe ich in dem verzeichniss drin
havi
 2008-08-21 16:12
#113829 #113829
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Gast+2008-08-21 14:08:40--
ja habe ich in dem verzeichniss drin


Was passiert? Eine Datei muss erstellt werden, oder?

Sind deine Daten wirklich durch Leerzeichen oder evtl. tab-getrennt?

Poste mal deine Datei + Skript...
Gast Gast
 2008-08-21 16:27
#113832 #113832
bei mir stürzt dabei alles ab so das ich den pc neu anmachen muss^^

mit meinem versuch bin ich jetzt so weit

$hash{AL}="052001";
$hash{AB}="052003";

while(<>){
chop;
@array=split;
$org=$_;

print "Drittes Element: $hash{$array[0]} - 0$array[2] - 000$array[4].00\n";


#print "$_\n";
}


es gibt mir alles richtig aus. nur kommen jetzt ein paar sonderfälle dazu. zumbeispiel ist teilweise die letzte nummer nciht vorhanden.. und in díesem fall soll es da dann auch nichts anzeigen.
Bsp:
AB FL 17+18
soll anzeigen 052001-017+018

bei mir zeigt es in dem fall jetzt aber 052001-017+18-000.00 an
was muss ich machen.
danke für jede hilfe

Gast Gast
 2008-08-21 16:38
#113833 #113833
sorry fehler. so siehts aus.
$hash{AL}="052001";
$hash{AB}="052003";

while(<>){
chop;
@array=split;
$org=$_;

print "$_ $hash{$array[0]} - 0$array[2] - 000$array[4]/000.00\n";


#print "$_\n";
}


frage bleibt aber noch die gleiche ;)
havi
 2008-08-21 16:53
#113834 #113834
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Gast+2008-08-21 14:27:28--
bei mir stürzt dabei alles ab so das ich den pc neu anmachen muss^^

mit meinem versuch bin ich jetzt so weit

$hash{AL}="052001";
$hash{AB}="052003";

while(<>){
chop;
@array=split;
$org=$_;

print "Drittes Element: $hash{$array[0]} - 0$array[2] - 000$array[4].00\n";


#print "$_\n";
}


es gibt mir alles richtig aus. nur kommen jetzt ein paar sonderfälle dazu. zumbeispiel ist teilweise die letzte nummer nciht vorhanden.. und in díesem fall soll es da dann auch nichts anzeigen.
Bsp:
AB FL 17+18
soll anzeigen 052001-017+018

bei mir zeigt es in dem fall jetzt aber 052001-017+18-000.00 an
was muss ich machen.
danke für jede hilfe




auf diese Zahlen wird ja gar nicht eingegangen?

warum dir den Computer abschmiert - keine Ahnung!?
<< |< 1 2 3 4 5 6 ... 8 >| >> 73 Einträge, 8 Seiten



View all threads created 2008-08-21 12:29.