2016-08-19 2 views
0

Я пытаюсь записать данные, рассчитанные моим скриптом perl, в файл csv, который будет повторно открыт и вводиться. Я столкнулся с двумя проблемами. Во-первых, CSV создал одну отдельную строку, добавляя каждое новое поле в новый столбец. Секрет состоит в том, что созданный CSV-файл не завершился успешно, поэтому я не могу снова открыть его и отредактировать, снова запустив скрипт. код, который я использую это:Ввод NewLine в письменной форме CSV-документы Perl

push my @rows, ["Entries Missing from English doc:"," " , "Entries Missing from French doc:"]; 
push @rows, ["$englishUnincluded[0]", " ", "$frenchUnincluded[0]"]; 
my $csv = Text::CSV->new ({binary=>1}) or die "cannot use CSV: ".Text::CSV->error_diag(); 
open my $csvFile, ">:encoding(utf8)", "telt.csv" or die "telt.csv: $!"; 
$csv->column_names(@{$rows[0]}); 
$csv->print($csvFile, $_) for @rows; 
close $csvFile or die "teet.csv: didnt close at all"; 

Я также попытался использовать последовательные операторы печати, а не на $csv->print(..) for @rows; я ранее имел statments выглядящие как

$field_vals = ["$val", "something", " "]; $csv->print($csvFile, $field_vals); и перезагружается все значения в поле вальса и распечатаны они как линии для CSV, но имели одинаковые два вопроса непрерывно.

** обратите внимание, что проблема с закрытием CSV не удаляется, если печатается только одна строка. Кроме того, сценарий не печатает сообщение «или умереть», не закрывая файл должным образом.

заблаговременно за любую помощь, которую вы предоставляете!

+0

Вы можете перейти к другому подходу и писать в CSV, просто '' print'ing до $ csvfile' значения, которые вы хотите через запятую и 'print $ csvfile" \ n "' в конце строки – yonyon100

ответ

3

Вы забыли заявленный конец строки:

my $csv = Text::CSV->new ({binary=>1, eol => $/}) or die "cannot use CSV: ".Text::CSV->error_diag(); 
#       here __^^^^^^^^^^^^ 
+0

Большое спасибо, эта исправленная проблема с моей линией. Однако она не разрешает мою проблему с разрешением. Файл не закрывается должным образом. Я получаю тот же 'tegt.csv: Permission denied at perlScript.pl line 97 #the open line' –

+0

@BrendanL: Добавьте причину, по которой файл не закрыт,' $! 'В матрице после закрытия. – Toto

+0

.: На самом деле я не получил сообщение о закрытии сообщения или закрыл его, поэтому я настолько смущен этой проблемой. Он не печатает сообщение или не умирает и не заканчивает программу после закрытия или смерти. Т.е.: я могу печатать вещи после утверждения и выполнять подфункции и другие подобные вещи. –

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