Вы правы в том, что вам нужно проверить размер терминала, на который вы печатаете. Есть много способов сделать это, но самый портативный и надежный способ, который я знаю, это Term::Size::Any
.
С этим вы можете получить ширину терминала, в котором вы работаете:
use Term::Size::Any;
my $cols = chars *STDOUT{IO};
После этого вы можете распечатать все, что хотите, с нужным количеством пробелов, например ::10000
printf "% ${cols}s", "Done\n";
Также помните, что программы не всегда выводятся на терминалы. Например, выходные данные могут быть перенаправлены в файл, поэтому вам может потребоваться соответствующий запасной вариант в случае сбоя определения размера терминала.