2011-08-11 24 views
0

Excelファイルからテキストを抽出すると、Win32::OLE::Variant=SCALAR(0x1214f94)となります。これをPerl変数に変換するにはどうすればよいですか?私は、値関数を使用しようとするだけで@data = @{$dataHash{$header}};Win32 :: OLE :: Variantをperl変数に変換しますか?

my ($refs,$rows,$header) = &extract; 

my %dataHash = %{$refs}; 
print "Keys:",keys %dataHash,"\n"; 
my @headers = @{$header}; 

my @test = @{$dataHash{'Date'}}; 

foreach my $scalar (@test){ 
    print $scalar; 
} 

foreach my $header (@headers){ 
    print "Checking Header: $header\n"; 

    @data = @{$dataHash{$header}}; 

    print $data; 
    foreach my $scalar (@data){ 
     print FH "$scalar\n"; 
    } 
} 

を印刷しているUPDATE:

私が行うために必要なすべてはuse Win32::OLE::Variantを入力してWin32::OLE::Variant=SCALAR(0x1214f94)が読めるの答えになりました。

答えて

1

一般的に、SCALAR(0x1214f94)などの値を取得すると、値ではなく参照/アドレスが印刷されます。あなたは間接参照変数の前にドル記号を追加することによってできます。

$a = \$b; 
$b = 1; 
print $a; # prints something like SCALAR(0x1214f94) 
print $$a; # prints 1 
1

をこの場合は、何を得ていることは、テキストよりも複雑な型が必要なときに呼び出すことがしばしばOLEから返され、Win32::OLE::Variantオブジェクトです。リンクされたページにリストされているメソッドを参照し、perl表現を得るために適切なものを選択してください。あなたはVariantオブジェクトの日付を持っているとき、あなたはこのような文字列としてそれを得ることができます。例えば

、:

my $string = $date->Date("yyyy-MM-dd"); 
関連する問題