我有一个perl子例程,它在PDF报表上打印oracle表中的文本,我想限制它写入的行数。这是子例程:
sub printTextToPDF{
my ($left_pos, $line_height, $case_field) = @_;
my ($field_str, $line_pos) = ('', 0);
if($case_field =~ /(.*?)\\+$/) {
$case_field = $1;
}
my @field = split /\s/, $case_field;
for $cnt (0 .. $#field) {
$field_str .= $field[$cnt];
if($cnt != (scalar @field - 1)) {
$line_pos = (rindex($field_str, "\n") > 0) ? rindex($field_str, "\n") : 0;
my ( $strwidth1 ) = prStrWidth(substr($field_str, $line_pos),'Courier',5);
my ( $strwidth2 ) = prStrWidth($field[$cnt+1],'Courier',5);
my ( $totalwidth ) = $strwidth1 + $strwidth2;
$field_str .= ($totalwidth < 124) ? ' ' : "\n";
}
}
@field = split("\n", $field_str);
for $pos (0 .. $#field) {
prText($left_pos, $line_height + (4.5*(scalar @field - ($pos+1))), $field[$pos]);
}
}
我目前正在使用oracle SQL中的substr
函数来限制字符数,但这不是限制行数的最佳方法。有没有办法可以做到,如果有,请告诉我如何做。提前谢谢。
答案 0 :(得分:1)
这可能适合你吗?
$count = 0;
for $pos (0 .. $#field)
{
prText($left_pos, $line_height + (4.5*(scalar @field - ($pos+1))), $field[$pos]);
$count++
if ($count >= 4)
{
last;
}
}