Perl で Word 文書を生成しています。生成するテキストに度記号 (°) を含めたいと考えています。次のようにコードを生成すると:
$cell .= qq/\xB0/;
これは機能し、生成されます (の値の場合$cell
) 55
: 55°
しかし、perlcritic は私がこれを行うと不平を言い、代わりにこの構造を使用することを提案します:
$cell .= qq/\N{DEGREE SIGN}/;
これは動作しません; 生成: 55°
のコードperl -d
を見ると、次のコードが実行されていることがわかります。
my $cell = 55;
$cell .= qq/\N{DEGREE SIGN}/; # the PBP way
print sprintf("%x\n", ord($_)) for split //, $cell;
my $cell = 55;
$cell .= qq/\xB0/; # the non-PBP way
print sprintf("%x\n", ord($_)) for split //, $cell;
結果:
35
35
b0
Win32::OLEを使用して Word 文書にテキストを出力しています:
my @column_headings = @{ shift $args->{'data'} };
my @rows = @{ $args->{'data'} };
my $word = Win32::OLE->new( 'Word.Application', 'Quit' );
my $doc = $word->Documents->Add();
my $select = $word->Selection;
$csv->combine(@column_headings);
$select->InsertAfter( $csv->string );
$select->InsertParagraphAfter;
for my $row (@rows) {
$csv->combine( @{$row} );
$select->InsertAfter( $csv->string );
$select->InsertParagraphAfter;
}
my $table =
$select->ConvertToTable( { 'Separator' => wdSeparateByCommas } );
$table->Rows->First->Range->Font->{'Bold'} = 1;
$table->Rows->First->Range->ParagraphFormat->{'Alignment'} =
wdAlignParagraphCenter;
@{ $table->Rows->First->Borders(wdBorderBottom) }{qw/LineStyle LineWidth/}
= ( wdLineStyleDouble, wdLineWidth100pt );
$doc->SaveAs( { 'Filename' => Cwd::getcwd . '/test.doc' } );
不要な Â を取り除くにはどうすればよいですか?