Как я могу напечатать «Done» или «Fail» в конце строки на стандартный вывод в Perl? - PullRequest
1 голос
/ 10 октября 2010

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

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

1 Ответ

3 голосов
/ 10 октября 2010

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

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

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

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

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

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

...