2010-10-10 2 views
1

Я только что начал с Perl, и я хочу написать свой собственный скрипт для сканирования документа и преобразования полученного TIFF-файла в файл PDF. Если преобразование завершается успешно (с использованием tiff2pdf), я хочу напечатать «Готово» в конце строки, но я не могу найти подсказки, чтобы сделать это в Интернете.Как я могу напечатать «Готово» или «Сбой» в конце строки до stdout в Perl?

Я предполагаю, что мне нужно получить геометрию терминала и подсчитать буквы, которые я уже напечатал, но это кажется сложным. У тебя есть какой-нибудь совет?

+1

Вы отправляете источник PDF в стандартный вывод или в именованный файл? Вы пробовали просто «распечатать» Done \ n ";'? Можете ли вы объяснить больше, что вы пытаетесь сделать и что получаете вместо этого? – aschepler

+0

Вы имеете в виду конец строки или сторону окна терминала? Это разные вещи. –

ответ

3

Вы правы в том, что вам нужно проверить размер терминала, на который вы печатаете. Есть много способов сделать это, но самый портативный и надежный способ, о котором я знаю, - Term::Size::Any.

При том, что вы можете получить ширину терминала вы работаете в:

use Term::Size::Any; 
my $cols = chars *STDOUT{IO}; 

с этим, вы можете печатать все, что вы хотите, проложенный с правильным количеством пробелов, например:

printf "% ${cols}s", "Done\n"; 

Также имейте в виду, что программы не всегда выводятся на терминалы. Например, вывод может быть перенаправлен на файл, поэтому вы можете захотеть иметь соответствующий резерв, если определение размера терминала не выполняется.