Файл добавляет один дополнительный пробел в каждой строке - PullRequest
2 голосов
/ 10 июня 2010

Я пытаюсь добавить все элементы в массив, используя push.затем я сохранил в другом файле

, но, начиная с файла, я вижу один пробел в каждой вещи ..

В чем проблема ... любой, кто сталкивался с этой проблемой.

open FILE , "a.txt"

while (<FILE>)
{

  my $temp =$_;

  push @array ,$temp;

}
close(FILE);

open FILE2, "b.txt";
print FILE2 "@array";
close FILE2;

Ответы [ 3 ]

7 голосов
/ 10 июня 2010

Когда вы цитируете переменную массива следующим образом: "@array" она интерполируется с пробелами.Вот откуда они берутся в вашем выводе.Так что не цитируйте, если вам не нужна или требуется такая интерполяция.

Теперь давайте перепишем вашу программу на современный Perl.

4 голосов
/ 10 июня 2010

Вы помещаете кавычки вокруг "@array". Это делает его строковой интерполяцией, которая для массивов эквивалентна join($", @array). Значением по умолчанию для $" является (угадайте, что?) Пробел.

Попробуйте

print FILE2 @array;
2 голосов
/ 10 июня 2010

open обычно принимает другой аргумент, который определяет, будет ли файл открыт для ввода или для вывода (или для обоих, или для какого-то другого особого случая).Вы пропустили этот аргумент, и поэтому по умолчанию FILE2 - это дескриптор входного файла.

Вы хотели сказать

open FILE2, '>', "b.txt"

Если поставить строку

use warnings;

в начале каждого сценария Perl интерпретатор поймет много подобных проблем для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...