Thread maximale Größe eines Arrays
(33 answers)
Opened by cohama at 2014-06-12 09:27 2014-06-12T09:57:49 cohama Welches ist das Handle zur Ergebnis-Datei? File2? ExtFile? Und das Ergebnis-Array: @Array3? @Array4? Warum nennst Du es nicht @result oder @output? Ob Du Variablen vorher deklarierst ist eher Geschmackssache, aber nicht wie Du sie benennst. Welcher Teil des Ergebnis-Arrays erscheint in der Ausgabedatei? Hellsehen ist bei dieser Hitze verdammt schwierig ... Zeig mal Ein- und Ausgabedaten! Ein Skript, das man mehrfach lesen muss, um den Ablauf zu verstehen, ist nicht nur ästhetisch miese, es ist auch unwirtschaftlich, weil man sich diese Arbeit jedesmal von neuem machen muss. Und es ist den anderen gegenüber eine Zumutung, insbesondere, wenn man eigentlich Hilfe bekommen möchte. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 foreach(@Array){ $line = shift(@Array); # Read the next line to line-Parameter $Ext = $1 if($line =~/EXTENSIONNUM=(\d+)/); # Extract the Extension-Number $ExtName = $1 if(($line =~ /NAME=(\d+)/)||($line =~ /NAME=(\w+)(\d+)/)); $allocDate = $1 if ($line =~ /DATEALLOCATED=(\d+-\d+-\d+)/); $AccountID = $1 if ($line =~ /ACCOUNTID=(\d+)/); push(@Array3,$ExtName," ",$Ext," ",$AccountID," ",$allocDate,"\n"); push(@Array4,$Ext,"\n"); } Es gibt gute Nachrichten: Whitespace ist jetzt steuerfrei! Das gleiche etwas aufgelockert und ohne das überflüssige shift, auch die Klammern dienen keineswegs immer der Barrierefreiheit: Code (perl): (dl
)
1 2 3 4 5 6 7 8 foreach my $line( @Array ){ $Ext = $1 if $line =~ /EXTENSIONNUM=(\d+)/; # Extract the Extension-Number $ExtName = $1 if $line =~ /NAME=(\w+)/; $allocDate = $1 if $line =~ /DATEALLOCATED=(\d+-\d+-\d+)/; $AccountID = $1 if $line =~ /ACCOUNTID=(\d+)/; push(@Array3,$ExtName," ",$Ext," ",$AccountID," ",$allocDate,"\n"); push(@Array4,$Ext,"\n"); } Die Verwendung des postfix-if ist ohnehin nur ratsam für kurze Bedingungen. Code: (dl
)
push(@Array3,$ExtName," ",$Ext," ",$AccountID," ",$allocDate,"\n"); Bist Du sicher, dass Du nicht einen String-concat machen wolltest (. statt ,)? Btw: Ist Dir klar, dass in $Ext usw. ggf. das Ergebnis eines früheren Matches steht? Edit: \w beinhaltet übrigens die Dezimalziffern, daher ist Deine Konstruktion $line =~ /NAME=(\w+)(\d+)/ relativ sinnfrei. Nochmal Edit: ... und damit die ||-Geschichte ebenfalls. Code: (dl
)
open (File2,">",$FileName)|| print "Error:Export-File dont writeable"; Um es mit Deinen Worten zu sagen: Error: Script dont readable. SCNR Last edited: 2014-06-12 14:01:27 +0200 (CEST) Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|