Schrift
[thread]12386[/thread]

einlesen bearbeiten und ausgeben (Seite 2)

Leser: 6


<< |< 1 2 3 4 5 ... 8 >| >> 73 Einträge, 8 Seiten
Gast Gast
 2008-08-21 13:24
#113807 #113807
guut danke..
in meiner datei ist jetzt eine liste die folgendermaßen aussieht
AB FL 14 NR 42 VA
AC FL 36 NR 56 VA
AD FL 16 NR 11 VA
das AB steht für einen Ort.. hierfür habe ich in einer weiteren datei eine liste in der ich die angaben dafür habe welcher ort zu welcher nummer gehört.
also das sieht so aus

AB 052001
AC 052025
usw
das FL soll nicht beachtet werden und die 14 soll immer iene 3stellige zahl sein also als 014 genommen werden. das NR soll auch nicht beachtet werden und aus der 42 eine 5 stellige zahl gemacht werden also 00042 danach will ich einen / haben und das VA heißt das ich hierrüber noch keine angabe habe also 000.00

so das das dann ingesamt 052001-014-00042/000.00 ergibt..

muss ich jetzt erst eine neue datei mit dem befehl open() erstellen?
Gast Gast
 2008-08-21 13:29
#113808 #113808
open( DATEI, "../Bezeichnung.txt" ) or die $!;
@array=<DATEI>;
close(DATEI);
open(DATEI1,">../liste.txt") or die "Fehler bei >";

also ungefähr so?
havi
 2008-08-21 13:46
#113809 #113809
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Liste.txt
Code: (dl )
1
2
3
AB 052001
AC 052025
AD 052030


Datei.txt
Code: (dl )
1
2
3
AB FL 14 NR 42 VA 
AC FL 36 NR 56 VA
AD FL 16 NR 11 VA


Skript.pl
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
#!/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);

$pnr{$felder[0]} = $felder[1];

} # 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);

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;


Ergebnis.txt
Code: (dl )
1
2
3
052001-014-00042/000.00
052025-036-00056/000.00
052030-016-00011/000.00


Gruss,
havi

Gast Gast
 2008-08-21 14:02
#113810 #113810
wie würde das aussehen wenn ich die Angeben für den Ort in ein HASH legen wollte?

$hash{AB}=052001
$hash{AC}=052025

so?
Gast Gast
 2008-08-21 14:06
#113811 #113811
ich ahbe mir überlegt das ich die datei ja garnicht öffnen muss. es reicht ja die datei einzulesen?
wäre das so möglich


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

print "$_ $_\n";
}`



dann wird mir ja 2 mal diese liste ausgegeben. jetzt müsste ic nurnoch die $_ bearbeiten wenn man davon ausgeht das $org die orginalversion ist?
renee
 2008-08-21 14:07
#113812 #113812
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Quote
wie würde das aussehen wenn ich die Angeben für den Ort in ein HASH legen wollte?

$hash{AB}=052001
$hash{AC}=052025

so?


In dem Fall musst Du die Zahlen als String speichern, weil es sonst als Oktale Zahl behandelt wird...

Code: (dl )
1
2
~ $ perl -le 'my $var = 0531; print $var'
345


Deswegen musst Du es so machen:

Code: (dl )
1
2
$hash{AB}="052001";
$hash{AC}="052025";
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
moritz
 2008-08-21 14:08
#113813 #113813
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Probiers doch einfach, den Code hast du ja schon geschrieben. Gehts?
Gast Gast
 2008-08-21 14:13
#113814 #113814
$hash{AL}="052001";
$hash{AC}="052025";



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

print "$_ $_\n";
}

ich hätte das jetzt su versucht...
ich habe ja nun als ausgabe 2 mal diese gewünschte liste nebeneinander..
müssten mir jetzt nicht alle due AL enthalten 052001 ausgeben?
tut es leider nicht:( was ist falsch?
havi
 2008-08-21 14:31
#113815 #113815
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Gast+2008-08-21 12:13:45--
$hash{AL}="052001";
$hash{AC}="052025";



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

print "$_ $_\n";
}

ich hätte das jetzt su versucht...
ich habe ja nun als ausgabe 2 mal diese gewünschte liste nebeneinander..
müssten mir jetzt nicht alle due AL enthalten 052001 ausgeben?
tut es leider nicht:( was ist falsch?


was gefaellt dir an Beitrag 13 nicht?
Gast Gast
 2008-08-21 15:27
#113819 #113819
mein problem ist dsa ich da total nich durchsteige und ich ja schon wissen müsste was da überhaupt was macht
<< |< 1 2 3 4 5 ... 8 >| >> 73 Einträge, 8 Seiten



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