2013-08-05 3 views
2

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

foreach(@type) 
{ 
print FH qq|"@type","@date","@loc","@title"\n|; 
} 

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

Заранее спасибо.

+0

все переменные имеют одинаковое количество значений – Balakumar

ответ

6

При использовании foreach (@type) специальной переменной $_ присваиваются значения @type один за другим. В вашем коде вы не используете переменную $_. Наоборот, вы выводите @type, массив, который вы повторяете. Вы, вероятно, хотели перебрать индексы, что-то вроде

for (0 .. $#type) { 
    print FH qq("$type[$_]","$date[$_]","$loc[$_]","$title[$_]"\n); 
} 

или с именем переменного цикла:

for my $index (0 .. $#type) { 
    print FH qq("$type[$index]","$date[$index]","$loc[$index]","$title[$index]"\n); 
} 

Обратите внимание, что если ваши столбцы могут содержать символы перевода строки или двойные кавычки, вы бы лучше с Text::CSV.

2

Если вы пытаетесь написать CSV-файл, рекомендуется использовать определенный модуль из CPAN, который вам очень поможет. Например, Text::CSV. Есть много мелких деталей, которые вы можете забыть в пользовательской реализации формата CSV.

Смежные вопросы