如何限制Perl中的行数

时间:2015-12-07 21:09:04

标签: oracle perl pdf

我有一个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函数来限制字符数,但这不是限制行数的最佳方法。有没有办法可以做到,如果有,请告诉我如何做。提前谢谢。

1 个答案:

答案 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;
        }
    }