2012-04-11 6 views
0

Ich habe eine Zeichenfolge in einem Array und ich möchte es in eine Datei schreiben. Das Problem ist, dass ich für eine Anzahl von Zeichen, die auf 100 begrenzt sind, schreiben muss, dann muss ich zu der Zeile zurückkehren und den Inhalt des Satzes beenden. Wenn dann wieder 100 Zeichen vorkommen, kehre ich zu der Zeile zurück, bis ich meinen Ketteninhalt in der Tabelle beendet habe.Schreiben Sie eine begrenzte Anzahl von Zeichen, dann kehren Sie zu der Zeile in Perl zurück und schneiden Sie nicht das letzte Wort

+6

ist Ihre Frage schwer zu lesen und noch schwerer zu verstehen. [Bearbeiten, um es zu verbessern] (http://stackoverflow.com/posts/10106418/edit): Interpunktion hinzufügen. Geben Sie Beispieleingabe und -ausgabe an. Zeigen Sie den Code, den Sie bereits geschrieben haben, um das Problem zu lösen, und weisen Sie genau auf die Teile hin, mit denen Sie Probleme haben, ohne unsere Hilfe. – daxim

+0

Bitte zeigen Sie einige Beispiele für Ihr Array und das Format, das Sie ausgeben möchten. Wenn Sie ein Array haben, bedeutet das, dass es mehrere Strings gibt? – Borodin

Antwort

1

Das Text::Wrap Modul wird wahrscheinlich tun, was Sie wollen, und ist ein Teil von Kern Perl, was bedeutet, dass Sie es nicht installieren müssen.

Dieses Programm liest den Text aus dem DATA Pseudo-Handle und formatiert es neu.

use strict; 
use warnings; 

use Text::Wrap; 

my @text = <DATA>; 
chomp @text; 

$Text::Wrap::columns = 100; 
print Text::Wrap::wrap '', '', @text; 

__DATA__ 
"Text::Wrap::wrap()" is a very simple paragraph formatter. It formats a 
single paragraph at a time by breaking lines at word boundaries. 
Indentation is controlled for the first line ($initial_tab) and all 
subsequent lines ($subsequent_tab) independently. Please note: 
$initial_tab and $subsequent_tab are the literal strings that will be 
used: it is unlikely you would want to pass in a number. 

Text::Wrap::fill() is a simple multi-paragraph formatter. It formats 
each paragraph separately and then joins them together when it's done. 
It will destroy any whitespace in the original text. It breaks text into 
paragraphs by looking for whitespace after a newline. In other respects 
it acts like wrap(). 

Both "wrap()" and "fill()" return a single string. 

Ausgang

"Text::Wrap::wrap()" is a very simple paragraph formatter. It formats a single paragraph at a time 
by breaking lines at word boundaries. Indentation is controlled for the first line ($initial_tab) 
and all subsequent lines ($subsequent_tab) independently. Please note: $initial_tab and 
$subsequent_tab are the literal strings that will be used: it is unlikely you would want to pass in 
a number. Text::Wrap::fill() is a simple multi-paragraph formatter. It formats each paragraph 
separately and then joins them together when it's done. It will destroy any whitespace in the 
original text. It breaks text into paragraphs by looking for whitespace after a newline. In other 
respects it acts like wrap(). Both "wrap()" and "fill()" return a single string. 
+0

wirklich tanks dieses Modul ist sehr nützlich, aber ich muss einen caractere hinzufügen, bevor chaque ligne hat jemand eine Idee? – user1326482

+0

@ user1236482, Comme ceci: 'Mein $ Wrapped = Text :: Wrap :: wrap (...); $ wrapped = ~ s/^ X // gm; print $ wrapped; '[" Chaque ligne "==" jede Linie "] – ikegami

+0

Panzer viel, die arbeiten – user1326482

Verwandte Themen