Modul/Sub für Zeilenumbruch (für Textausgabe)
Charles M
- perl
Hi, kennt jemand ein Perl-Modul oder hat jemand mal eine sub selbst geschrieben, die einen nach Zeichen-Länge frei definieren Zeilenumbruch bewirkt? Die Befehle sollten also in "print "$text"; folgendes bewirken:
Hi, kennt jemand ein Perl-Modul oder hat jemand mal eine sub selbst geschrieben, die einen nach Zeichen-Länge frei definieren Zeilenumbruch bewirkt? Die Befehle sollten also in "print "$text"; folgendes bewirken:
- $text wird aufgegliedert in Zeilen zu jew. beispielsweise 80 Zeichen
- der Zeilenumbruch erfolgt nur bei Leerzeichen, nicht mitten im Wort
use Text::Wrap;
perldoc Text::Wrap
- es wird berücksichtigt, dass $text auch HTML-Sonderzeichen enthält (z.B. ß), die im Text dann nur 1 Buchstabe sind.
Das wird meines Wissens so nicht gehen, du musst die HTML Sonderzeichen erst in normale Buchstaben umwandeln dann umbrechen und dann wieder zurückwandeln.
Struppi.
Halli hallo Charles,
ich kenn leider so ein Modul nicht, aber wie wäre es hiermit?
my $val = 0;
foreach $line (@lines) {
foreach $word ( split / /, $line ) {
my $len = 1;
$len = lenght($word) unless $word =~ /&\w+;/;
$val += $len;
$word = "<br>$word" if $len > 80;
}
}
Ich hab es nicht getestet, könnte aber funktionieren.
Greez,
opi
Hallo,
verzeih, my $val = 0 gehört in die innere erste foreach Schleife.
Greez,
opi
Hallo,
so, ich habe mich ein wenig verhaspelt. Diese Code müsste nahezu ok sein.
foreach my $line (@lines) {
my $val = 0;
foreach my $word ( split / /, $line ) {
my $len = 1;
# die Länge des Wortes wird nur berechnet,
# wenn es kein Umlaut ist, ansonsten +1
$len = lenght($word) unless $word =~ /&\w+;/;
# +1 für das Leerzeichen, welches bei split / /
# verloren gegangen ist
$val = $val+$len+1;
if ($val > 80) {
$word = "<br>$word";
$val = 0;
}
}
}
Greez,
opi