Модуль PDF::Table Perl не работает на Debian Jessie

Когда я пытаюсь использовать PDF::Table на Debian Jessie (Perl 5.20), я получаю следующее сообщение:

Useless use of greediness modifier '?' in regex; marked by <-- HERE in m/(\S{20}? <-- HERE )(?=\S)/ at /usr/share/perl5/PDF/Table.pm line 370.

Этот модуль отлично работает в Debian Wheezy (с Perl 5.014002), но обновление Perl 5.20, кажется, делает его непригодным для использования в Debian Jessie. Единственная документация, которую я нашел по этой ошибке, говорит о Perl обновить, но не дает никакого решения, чтобы исправить это. Сценарий, который я использую, — это основной пример PDF::Table на CPAN:

 use strict;
 use warnings;
 use PDF::API2;
 use PDF::Table;

 my $pdftable = new PDF::Table;
 my $pdf = new PDF::API2(-file => "table_of_lorem.pdf");
 my $page = $pdf->page;

 # some data to layout
 my $some_data =[
    ["1 Lorem ipsum dolor",
    "Donec odio neque, faucibus vel",
    "consequat quis, tincidunt vel, felis."],
    ["Nulla euismod sem eget neque.",
    "Donec odio neque",
    "Sed eu velit."],
    #... and so on
 ];

my $left_edge_of_table = 50;
 # build the table layout
 $pdftable->table(
     # required params
     $pdf,
     $page,
     $some_data,
     x => $left_edge_of_table,
     w => 495,
     start_y => 500,
     start_h => 300,
     # some optional params
     next_y  => 750,
     next_h  => 500,
     padding => 5,
     padding_right => 10,
     background_color_odd  => "gray",
     background_color_even => "lightblue", #cell background color for even rows
  );

$pdf->saveas("table_of_lorem.pdf");

print "Content-type: text/html\n\n";
print "Ok";

Мой хостер только говорит, что я должен "адаптировать свой код"... Не могли бы вы помочь мне найти правильный способ сделать это? Я заметил эту ошибку только при использовании PDF::Table, но возможна ли такая же проблема с другим модулем Perl в Perl 5.20? Спасибо большое за помощь!


person Satch    schedule 20.01.2018    source источник
comment
Не могли бы вы проверить, какая версия PDF::Table установлена? Этот конкретный выпуск может быть сломан. Запустите perl -MPDF::Table\ 99 (включая пробел). он будет жаловаться, что у него есть только более низкая версия.   -  person simbabque    schedule 20.01.2018
comment
Проблема, которую вы видите, устранена в версии 0.9.10. Вы можете просто установить последнюю версию вручную из CPAN или использовать local::lib для своего проекта, чтобы он не мешал системному Perl (хотя для этого модуля я думаю, что это не проблема, потому что он не имеет никаких зависимостей). которые могут быть обновлены, кроме Карпа).   -  person simbabque    schedule 20.01.2018
comment
Привет. Я попробовал perl 5.22 с PDF::API2 версии 2.025 и PDF::Table версии 0.9.6, и код, кажется, работает (напишите «ОК» и создайте файл PDF), несмотря на сообщение (которое, на мой взгляд, является просто предупреждением ).   -  person saudic    schedule 20.01.2018
comment
Да, это предупреждение. Но можно еще обновить. Вам не обязательно использовать системные пакеты для ваших модулей Perl. Вы можете установить более новые версии, если хотите.   -  person simbabque    schedule 20.01.2018
comment
На сервере установлена ​​версия PDF::Table 0.9.6. Установка последней версии (0.9.14) в качестве библиотеки решает проблему на Perl 5.20. Большое спасибо вам обоим за уделенное время!   -  person Satch    schedule 20.01.2018


Ответы (1)


Проблема, которую вы видите, является предупреждением. Это раздражает, но на это можно не обращать внимания. Модуль был исправлен в версии 0.9.10. Вы можете установить это напрямую из CPAN вместо использования системного пакета, и тогда предупреждение исчезнет.

person simbabque    schedule 20.01.2018