Давайте посмотрим, что происходит за кулисами. Ваш цикл while эквивалентен:
while(defined($_ = <READFILE>))
{
if($_ =~ /\D/)
{
print $_;
}
}
Итак, вы проверяете, содержит ли строка нецифровый символ (что она и делает), и затем печатаете эту строку.
Если вы хотите напечатать Hello Brue this is a test.
вместо 1. Hello Brue this is a test.
, вам придется использовать что-то вроде:
while(<READFILE>) {
s/^\d+\. //;
print;
}
Кроме того, это сделало бы код более читабельным, если бы вы использовали переменную вместо $_
.