2015-12-07 2 views
0

У меня есть PERL подпрограмма, которая при печати текста из таблицы оракула на отчете в формате PDF, и я хочу, чтобы ограничить количество строк, он записывает 4. Здесь есть подпрограмма:Как ограничить количество строк в Perl

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]); 
    } 
} 

В настоящее время я использую функцию substr в oracle SQL, чтобы ограничить количество символов, но это не лучший способ ограничить количество строк. Есть ли способ, которым я могу это сделать, если так, пожалуйста, покажите мне, как это сделать. Заранее спасибо.

+5

В вашем запросе Oracle вы можете делать 'where rownum <= 4'? – Hambone

+1

@Hambone - это просто ограничивает количество строк. Моя строка будет сохранена в одной строке, которую мне нужно распечатать в отчете PDF, и ограничить длину, чтобы не переместиться в указанное пространство. – user3224907

+1

Gotcha. Мне интересно узнать, удовлетворит ли ваше решение решение SteveCarlson. Если нет, уточните пожалуйста. Я уверен, что здесь есть решение – Hambone

ответ

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; 
     } 
    } 
+1

Если бы мы играли в гольф, мы могли бы заменить последние 5 строк на 'last if $ count ++> 3' – Hambone

Смежные вопросы