Eine Variable soll immer nur Zahlen mit einer einzigen bestimmten wertigkeit hab
Quitschibo
- perl
Hi,
ich glaube ich hab da ein etwas defizileres Problem... ich werd mal versuchen das zu beschreiben...
ich habe ein script das folgende Zahlenwerte auf die Variable $x ausgibt:
1111111110000
222221111111000000
222210004444
etc...
die zahlenwerte werden zum speichern von daten in .txt files gebraucht... die .txt files werden über diese Zahlen angesprochen also zb. file0.txt file1.txt file2.txt
wie oft eine Zahl vorkommt zeigt dem Script wieviele einträge es in die Datei machen soll... das funktioniert soweit auch, aber das problem ist folgendes... nehmen wir mal den 222111000 string...
ich mach mein script folgendes...
alle daten die für die zahl 2 bestimmt sind kommen in file2.txt alle Daten die für die zahl 1 bestimmt sind gehen in file1.txt allerdings leider auch nochmal die daten die in file2.txt bereits drin sind.. und so geht das dann immer weiter...
die zahl die als erste steht bekommt also auch alle anderen Einträge mit ab...
wie kann ich das also einschränken das der für jeden zahlenwert auch nur die entsprechenden daten in das file schreibt und nicht gleich alle anderen noch dazu...
ich hoffe das mir da wer helfen kann
CU Quitschi
Hallo,
leider seh ich den Source-Code nicht, aber ich versuch mich mal in einer Lösung !!
Dabei könnte der Fehler in deiner Logik sein, mit welchen Namen du die Dateien öffnest. So wie du das schreibst, geh ich nun mal davon aus, das die Zahelnfolgen kompat auftreten, dann kannst du doch zuerst eine Datei öffnen, die Bearbeitung abschliesen und dann die Datei wieder schliesen. Erst jetzt öffnest du die nächste Datei, dabei solte eigentlich nichts schiefgehen können !!
die zahlenwerte werden zum speichern von daten in .txt files gebraucht... die .txt files werden über diese Zahlen angesprochen also zb. file0.txt file1.txt file2.txt
wie oft eine Zahl vorkommt zeigt dem Script wieviele einträge es in die Datei machen soll... das funktioniert soweit auch, aber das problem ist folgendes... nehmen wir mal den 222111000 string...
ich mach mein script folgendes...
alle daten die für die zahl 2 bestimmt sind kommen in file2.txt alle Daten die für die zahl 1 bestimmt sind gehen in file1.txt allerdings leider auch nochmal die daten die in file2.txt bereits drin sind.. und so geht das dann immer weiter...
Das scheint mir nocah einem dateiezeigerkonflikt zu handeln, leider weiß ich nicht genau wie das in PERL gelöst ist.
die zahl die als erste steht bekommt also auch alle anderen Einträge mit ab...
wie kann ich das also einschränken das der für jeden zahlenwert auch nur die entsprechenden daten in das file schreibt und nicht gleich alle anderen noch dazu...
wie gesagt bearbeite die Datei und schließ sie dann danach !!
Ich hoffe ich konnte dir helfen !!
Bis denn ... Starbuck
Hi Nochmal,
okey... wie ich sehe braucht ihr doch den Quellcode... dann will ich euch mal die bearbeitungssub hier posten...
sub manipulation
{
@topicsystem = ("");
@topicinhaltsystem = ("");
for ($i = $#data; $i >= 0; $i--)
{
($topic, $numt, $others) = split(//,$data[$i]);
chop $others;
push (@topicsystem, "$FORM{$i}$numt$others");
open (FILE,">test.txt");
foreach $line(@topicsystem)
{
if ($line ne "")
{
print FILE "$line\n";
}
}
close(FILE);
open(FILE, "$data_path/ch$numt.txt");
@choices = <FILE>;
close(FILE);
for ($j = $#choices; $j >= 0; $j--)
{
($name, $votes, $pos) = split(//,$choices
[$j]);
$name = "$i". "X$j";
$votes = "$i". "Y$j";
chop $pos;
push (@topicinhaltsystem, "$FORM{$votes}$FORM{$name}$pos");
print $i;
@topicinhaltsystem = reverse @topicinhaltsystem;
open(TEMPX, ">$data_path/temp$numt.db");
foreach $line2 (@topicinhaltsystem)
{
if ($line2 ne "")
{
print TEMPX "$line2\n";
}
}
close(TEMPX);
open(TEMP2, "<$data\_path/temp$numt.db");
@temps = <TEMP2>;
close(TEMP2);
@temps = sort NummernSort @temps;
@temps = reverse @temps;
open(FILE, ">$data\_path/testch$numt.txt");
foreach $tempval (@temps)
{
($votes, $topic, $num) = split(//, $tempval);
print FILE "$topic$votes$num";
}
close(FILE);
unlink ("$data\_path/temp$numt.db");
}
}
}
Sodale... ist etwas kompliziert... aber es funktioniert soweit ja ganz gut... nur eben das Problem mit den Mehrfacheinträgen bei den Files...
CU Quitschi
Hi,
das ganze ist vielleicht ein bißchen ungenau;
ich habe ein script das folgende Zahlenwerte auf die Variable $x
ausgibt:1111111110000
222221111111000000
222210004444etc...
die zahlenwerte werden zum speichern von daten in .txt files
gebraucht...
wie sehen die Daten aus?
die .txt files werden über diese Zahlen angesprochen also zb.
file0.txt file1.txt file2.txt
Ergeben sich die Ziffern-Endungen durch die Zahlen in dem String?
alle daten die für die zahl 2 bestimmt sind kommen in file2.txt
alle Daten die für die zahl 1 bestimmt sind gehen in file1.txt
allerdings leider auch nochmal die daten die in file2.txt bereits
drin sind.. und so geht das dann immer weiter...
Vielleicht postest du mal ein bißchen Quelltext, damit man das
Problem verstehen kann?
ich hoffe das mir da wer helfen kann
Mit entsprechenden Infos wird dir bestimmt jemand helfen können ,)
mfg
CK1
Hi Quitschi,
wenn ich Dein Problem richtig verstanden habe, könnte sowas helfen:
-------------------------------------------------------------------------------
$filenum = '';
for each $num (split '', $x) # einen String 1111122240000 in einzelne Zeichen zerlegen
{
if ($filenum ne $num)
{
close DATEI if $filenum;
open (DATEI, ">>file$num.txt");
$filenum = $num;
}
print DATEI "$num\n";
}
close DATEI;
-------------------------------------------------------------------------------
Vielleicht verlierst Du ja noch mal ein Wort darüber, wo Dein Denkfehler lag (falls das hier funktionieren sollte).
Gruß,
Jörk