Я работаю над автоматизацией создания документа Word в Perl с помощью Win32::OLE. Мой текущий код выглядит следующим образом, и он покидает экземпляры WINWORD.EXE в памяти:Чистый способ написать OLE-код в Perl?
my $range = $select->Range;
my $table = $doc->Tables->Add($range, scalar @rows, scalar @{ $rows[0] });
for my $rownum (0 .. $#rows) {
for my $colnum (0 .. $#{ $rows[$rownum] }) {
my @cellpos = ($rownum + 1, $colnum + 1);
my $data = $rows[$rownum][$colnum];
$table->Cell(@cellpos)->Range->{'Text'} = $data;
1;
}
}
Однако, если бы я, чтобы реорганизовать свой код согласно Microsoft recommendation for Visual Studio .NET, это будет выглядеть следующим образом:
my $range = $select->Range;
my $tables = $doc->Tables;
my $table = $tables->Add($range, scalar @rows, scalar @{ $rows[0] });
for my $rownum (0 .. $#rows) {
for my $colnum (0 .. $#{ $rows[$rownum] }) {
my @cellpos = ($rownum + 1, $colnum + 1);
my $data = $rows[$rownum][$colnum];
my $cell = $table->Cell(@cellpos);
my $cell_range = $cell->Range;
$cell_range->{'Text'} = $data;
}
}
Этот код выполняет эту работу, но мне это ужасно «шумно». Есть ли более чистый способ сделать это?