User since
2003-08-19
44
Artikel
BenutzerIn
hi, ich hab das problem, das ich mich format = <STDOUT>.... nicht ganz zruecht kommme. ich habe eine config datei, die sieht so aus:
wort1
wort2
wort3
wort4
wort5
wort6
wort7
wort8
nach dem auslesen,soll das dann auf der konsole so ausgegeben werden:
1 wort1 2 wort2 3 wort3
4 wort4 5 wort5 6 wort6
7 wort7 8 wort8
wobei dazwischen ein tab sein soll. wie stell ich das nun wieder an?
DANKE:)
User since
2003-08-04
14371
Artikel
ModeratorIn
my $i = 1;
foreach(@words){
print $i," ",$_;
print $i % 3 == 0 ? "\n" : "\t";
$i++;
}
\n\n
<!--EDIT|renee|1084362912-->
User since
2003-08-19
44
Artikel
BenutzerIn
hallo, danke erstmal. so ähnlich hatte ich es auch, allerdings verrutschen dann die wörte manchmal.....es sollte was sein, was immer gleich aussieht.
da ich auch nicht weiss, wie lang die datei wird, also wieviele zeilen drin sind.....
DANKE:-)
User since
2003-08-04
14371
Artikel
ModeratorIn
Kannst Du wenigstens sagen, wie lang das längste Wort ist, sonst wirst Du es nie 100%ig machen können. Hier mal ein Ansatz...
my $i = 1;
foreach my $word(@words){
$word = ' ' x (10 - length($word)).$word;
$i = sprintf("%5d",$i);
print $i," ",$word;
print $i % 3 == 0 ? "\n" : "\t";
$i++;
}
User since
2003-08-04
7321
Artikel
ModeratorIn
[quote=renee,12.05.2004, 14:23]Kannst Du wenigstens sagen, wie lang das längste Wort ist[/quote]
naja, wenn nicht auf anhieb, dann zumindest dann, wenn er die datei erstmal einmal durchläuft und das längste wort findet!
User since
2003-08-04
5871
Artikel
ModeratorIn
Config-Datei klingt nicht nach irre lang. Die kann man einfach in den Speicher einlesen und die längste Zeile ermitteln. Oder zweimal durchlesen, erst Länge ermitteln, dann ausgeben. Dann klappts auch mit 3GB großen Dateien.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-08-19
44
Artikel
BenutzerIn
so, also ich habe jetzt das längste wort gefunden.....wie stell ich es nun an?
sagen wir mal, das längste wort ist 7 zeichen lang, dann kommt es ja noch auf die nummer davor an, die kann ja von 1 bis 999..... gehen. da bietet es sich an, die mit in die datei zu schreiben, oder?
DANKE\n\n
<!--EDIT|Math55|1084365975-->
User since
2003-08-04
7321
Artikel
ModeratorIn
brauchst du nicht...
# $maxwordlen: länge des längsten wortes
# $wordcount: anzahl der wörter in datei
my $len = $maxwordlen + length($wordcount);
und schon hast du eine länge, die auf jeden Fall funzt!
User since
2003-08-04
14371
Artikel
ModeratorIn
Bei mir wird die Zahl schon auf 5 Zeichen "gestreckt"...
my $i = 1;
my $longest = 7; # länge des längsten wortes
foreach my $word(@words){
$word = ' ' x ($longest - length($word)).$word;
$i = sprintf("%5d",$i); # hier wird die Zahl auf 5 Stellen "getrimmt"
print $i," ",$word;
print $i % 3 == 0 ? "\n" : "\t";
$i++;
}
wenn man das längste Wort noch nicht kennt, kann man das so ermitteln (besser gesagt die Länge des längsten Wortes):
my $longest = 0;
foreach(@words){
$longest = length($_) if(length($_) > $longest);
}
\n\n
<!--EDIT|renee|1084366617-->