Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12386[/thread]

einlesen bearbeiten und ausgeben (Seite 5)

Leser: 6


<< |< 1 2 3 4 5 6 7 8 >| >> 73 Einträge, 8 Seiten
LanX-
 2008-08-21 23:27
#113863 #113863
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
was? also mich auch nihc ... komich
Gast Gast
 2008-08-22 00:44
#113865 #113865
$hash{AL}="052001";
$hash{AB}="052003";
$hash{HX}="052363";
$hash{BRE}="052324";

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

if ($array[2] =~ "\\+"){
$array[2] =~ s/\+/\+0/;
}

if($array[4] != "NR")
{
print "$_ $hash{$array[0]}-0$array[2]-000$array[4]/000.00 $array[5] $array[6] $array[7]\n";
}
else
{
print "$_ $hash{$array[0]}-0$array[2]\n";
}
#print "$_\n";
}


also so weit bin ich jetzt..
jetzt muss ich das ganze nurnoch unter Fertig.txt speichern..
wie mache ich das?
havi
 2008-08-22 10:55
#113877 #113877
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Gast+2008-08-21 22:44:21--
jetzt muss ich das ganze nurnoch unter Fertig.txt speichern..
wie mache ich das?


Code: (dl )
1
2
3
4
5
6
7
8
9
open(my $fhFertig, "<Fertig.txt") or die $!;

while(<>) {

print $fhFertig $_;

} # while

close($fhFertig) or die $!;


klar?
renee
 2008-08-22 11:04
#113878 #113878
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
havi: Du öffnest die Datei zum Lesen, nicht zum Schreiben...
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/
Gast Gast
 2008-08-22 11:29
#113879 #113879
no such file or directory at flurstueck.pl line 51, <> line 25.

sagts nu ;) was mache ich da falsch?


und noch eine frage ich habe da jetzt was geändert und zwar sieht das ganze jetzt so aus :
Code (perl): (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
49
50
51
52
53
54
55
$hash{AL}="052001";
$hash{AB}="052003";
$hash{HX}="052363";
$hash{BRE}="052324";
#Um switch anweisung zu benutzen
use Switch;
# Eingabedatei öffnen
# Ausgabedatei-normalfälle öffnen
# Ausgabedatei-sonderfälle öffnen

#schleife
while(<>){ # Eingabedatei zeilenweise lesen
chop;
$org=$_;
@array=split;
# $array[0]: Gemarkungsbezeichnung 
# $array[1]: "FL"
# $array[2]: Flur nummer 
# $array[3]: "NR" 
# $array[4]: Flurstücksnummer (z.B. 42 oder 260/285)

$Gemarkungsnummer=$hash{$array[0]};
$Flurnummer=$array[2]; 
$Flurstuecksnummer=$array[4]; # aufsplitten in Zaehler und Nenner
($Flurstuecksnummerzaehler,$Flurstuecksnummernenner)=split ("/",$Flurstuecksnummer); # aufsplitten in Zaehler und Nenner


#schaut ob im string ein "+" vorkommt, wenn ja wird das "+" durch "+0" getauscht
if ($array[2] =~ "\\+"){
$array[2] =~ s/\+/\+0/;
}

#abfrage ob im String "NR" vorkommt
if($array[4] != "NR")
{
# print "$_     $hash{$array[0]}-0$array[2]-$nullen$array[4]/000.00 $array[5] $array[6] $array[7]\n";
printf "%s\t%s-%03u-%05u/%03u.00\t \n", $org, $Gemarkungsnummer, $Flurnummer, $Flurstuecksnummerzaehler, $Flurstuecksnummernenner;
}
else
{
#print "$_     $hash{$array[0]}-0$array[2]\n";
printf "%s\t%s-%03u \n", $org, $Gemarkungsnummer, $Flurnummer, $Flurstuecksnummerzaehler, 
}
        #print "$_\n";
}

open(my $fhFertig, "<Fertig.txt") or die $!;

while(<>) {

   print $fhFertig $_;

} # while

close($fhFertig) or die $!;



jetzt habe ich das problem das es zum beispiel bei
HX FL 7 NR 115 116 nur
052363-007-00115/000.00 anzeigt
es soll mir hierbei aber auch 00116 anzeigen.
ich denke mir mal das ich dann das array 5 nochmal spliten muss und zwar da wo das leerzeichen ist oder? wenn ja wie funktioniert das? wenn nein wie dann?
renee
 2008-08-22 11:35
#113880 #113880
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wofür brauchst Du das "Switch"? Ich würde empfehlen, entweder Perl 5.10 zu verwenden, dort gibt es "given-when" und das funktioniert. Oder wenn Du bei einer vorherigen Perl-Version bleibst (bleiben musst), dann würde ich auf if-else-Anweisungen zurückgreifen. Switch ist buggy!

Lies Dir auch mal mein Kommentar zu havis Antwort durch!

Außerdem brauchst Du da kein while(<>) (beim Schreiben). Du musst das "printf" in die Datei machen...
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/
Gast Gast
 2008-08-22 11:46
#113881 #113881
ok und wie mache ich das mit given when? hab grad mal versucht aber macht keinen unterschied zu jetzt.. aber zeigt auch kein fehler das ichs falsch benutzt habe...

und das mit dem speichern? wie kann ich das denn richtig machen?
Gast Gast
 2008-08-22 11:59
#113882 #113882
und die person die mir die aufgabe gegeben hat sagte ich solle irgendwas mit $argv[] machen.. ich verstehe aber ncih was mir dsa bei diesm programm bringen soll. kann mir da jemand was zu sagen?

habe 5.10 aber habe mir grad mehrere beispiele dazu angesehen und verstehe immernochnciht wie mir das weiterhelfen soll


ok habe gelesen ds daran was nich stimmt richtig? wie mache ich das dann?
Gast Gast
 2008-08-22 11:59
#113883 #113883
Zeile 29:
Code (perl): (dl )
$array[4] != "NR"
muss lauten
Code (perl): (dl )
$array[4] ne "NR"

Zeile 45: Was schließt die klammer "}" ?
Zeile 47:
Code (perl): (dl )
open(my $fhFertig, "<Fertig.txt") or die $!
muss lauten
Code (perl): (dl )
open(my $fhFertig, '>', "Fertig.txt") or die $!


weiterhin:
Bitte benutze
Code: (dl )
1
2
use strict;
use warnings;

Das hilft einem Anfänger sauberen und funktionsfähigen Code zu schreiben, weil es auf Schreibfehler und Strukturfehler aufmerksam macht.
Gast Gast
 2008-08-22 12:11
#113884 #113884
also.. ich habe das jetzt erstmal ganz raus gelassen da ich das speichern ja eh erst zum schluß brauche und ich dmait dann garnicht mehr durchsteige.
also



$hash{AL}="052001";
$hash{AB}="052003";
$hash{HX}="052363";
$hash{BRE}="052324";
#Um switch anweisung zu benutzen
use Switch;
# Eingabedatei öffnen
# Ausgabedatei-normalfälle öffnen
# Ausgabedatei-sonderfälle öffnen




#schleife
while(<>){ # Eingabedatei zeilenweise lesen
chop;
$org=$_;
@array=split;
# $array[0]: Gemarkungsbezeichnung (z.B. AL)
# $array[1]: "FL"
# $array[2]: Flur nummer (z.B. 14)
# $array[3]: "NR"
# $array[4]: Flurstücksnummer (z.B. 42 oder 260/285)

$Gemarkungsnummer=$hash{$array[0]};
$Flurnummer=$array[2];
$Flurstuecksnummer=$array[4]; # aufsplitten in Zaehler und Nenner
($Flurstuecksnummerzaehler,$Flurstuecksnummernenner)=split ("/",$Flurstuecksnummer); # aufsplitten in Zaehler und Nenner



#schaut ob im string ein "+" vorkommt, wenn ja wird das "+" durch "+0" getauscht
if ($array[2] =~ "\\+"){
$array[2] =~ s/\+/\+0/;
}

#abfrage ob im String "NR" vorkommt
if($array[4] != "NR")
{
# print "$_ $hash{$array[0]}-0$array[2]-$nullen$array[4]/000.00 $array[5] $array[6] $array[7]\n";
printf "%s\t%s-%03u-%05u/%03u.00\t \n", $org, $Gemarkungsnummer, $Flurnummer, $Flurstuecksnummerzaehler, $Flurstuecksnummernenner;
}
else
{
#print "$_ $hash{$array[0]}-0$array[2]\n";
printf "%s\t%s-%03u \n", $org, $Gemarkungsnummer, $Flurnummer, $Flurstuecksnummerzaehler,
}
#print "$_\n";
}



so siehts bisher aus.
nochmal diie frage. das UA zum beispiel wird mir nicht angezeigt oder die zweite zahl aus array4 wird nicht angezeig wie kann ich das ändern?
<< |< 1 2 3 4 5 6 7 8 >| >> 73 Einträge, 8 Seiten



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