Ich benutze so etwas:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sub _add_text {
my ($x, $y, $text, $size) = @_;
$size ||= 20;
my @parts;
while( $size < length $text ) {
my $position = rindex $text, " ", $size;
$position = $size if $position == -1;
my $sub = substr $text, 0, $position;
$text = substr $text, $position;
push @parts, $sub;
}
push @parts, $text if length $text;
for my $line ( @parts ){
$line = " " unless $line;
prText( $x, $$y , $line );
$$y -= 15;
}
}
Damit bin ich ziemlich flexibel.
Aufruf:
my $x = 20; # Abstand vom linken Rand
my $y = 130; # Abstand vom unteren Rand
my $row_len = 10; # Anzahl Zeichen, nach denen spaetestens umgebrochen werden soll
_add_text( $x, \$y, 'Ganz langer Text mit vielen Worten', $row_len );
Ich übergebe hier eine Referenz auf $y, weil ich da nicht ständig was hin und her kopieren will.
Die Überprüfung auf "\n" müsste man hier noch einbauen. Z.B. am Anfang schon an \n spliten und für jedes Element dann auf die Länge prüfen.