У меня есть Perl-скрипт, соответствующие биты которого размещены ниже.
# Pull values from cells
ROW:
for my $row ( $row_min + 1 .. $row_max ) {
my $target_cell = $worksheet->get_cell( $row, $target_col);
my $response_cell = $worksheet->get_cell( $row, $response_col);
if ( defined $target_cell && defined $response_cell ) {
my $target = $target_cell->value();
my $response = $response_cell->value();
# Determine relatedness
my $value = $lesk->getRelatedness($target, $response);
# Copy output to new Excel spreadhseet, 'data.xls'
my $workbook1 = Spreadsheet::WriteExcel->new('data.xls');
my $worksheet1 = $workbook1->add_worksheet();
$worksheet1->set_column(0, 3, 18);
my $row = 0;
foreach ($target) {
$row++;
$worksheet1->write( $row, 0, "Target = $target\n");
$worksheet1->write( $row, 1, "Response = $response\n");
$worksheet1->write( $row, 2, "Relatedness = $value\n");
}
}
}
Этот скрипт использует Perl-модули ParseExcel и WriteExcel. Электронная таблица входных данных представляет собой список слов в двух столбцах, один из которых помечен как «Цель», а другой - как «Ответ». Сценарий берет каждое целевое слово и каждое ответное слово и вычисляет значение родства между ними (вот что
$lesk->getRelatedness
секция кода делает. Он вызывает модуль perl под названием WordNet :: Similarity, который вычисляет меру родства между словами).
Все это прекрасно работает. Проблема в том, что я пытаюсь записать вывод (мера сходства или значение $ в этом сценарии) в новый файл Excel. Независимо от того, что я делаю с кодом, единственный вывод, который он мне даст, - это связь между LAST target и ответными словами. Он игнорирует все остальное.
Однако это происходит только тогда, когда я пытаюсь записать в файл Excel. Если вместо этого я использую функцию «печать», я могу увидеть все выходные данные в командном окне. Я всегда могу просто скопировать и вставить это в Excel, но было бы намного проще, если бы я мог автоматизировать это. Есть идеи, в чем проблема?