Perl вывод перезаписывает себя - PullRequest
8 голосов
/ 10 ноября 2011

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

Однако я получаю вывод, подобный этому: "nominalte cows".

По существу, бит после строки (номинальной) перезаписывает начало.Я знаю, что удаление строк chomp и regex останавливает этот эффект, но мне нужно, чтобы он был на одной строке без пробелов.Куда я иду не так?

while ($line = <INPUT>) {

        chomp $line;
        $line =~ s/ //g; 
        printf "\@attribute %s nominal\n", $line;
}

Ответы [ 2 ]

12 голосов
/ 10 ноября 2011

Ваш входной файл, вероятно, из MS Windows с концом строки, закодированным как CR-LF. Вы также можете просто s/\r// удалить CR.

6 голосов
/ 10 ноября 2011

Возможно, у вас есть \r в вашей переменной.Попробуйте использовать \s:

$line =~ s/\s//g; 

См. perlre для значения \s.

...