0

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

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";
    }
}

アップデート:

入力するだけで、読みやすい回答use Win32::OLE::Variantになりました。Win32::OLE::Variant=SCALAR(0x1214f94)

4

2 に答える 2

1

原則として、 のような値を取得する場合はSCALAR(0x1214f94)、値ではなく参照/アドレスを出力しています。変数の前にドル記号を追加することで逆参照できます。

$a = \$b;
$b = 1;
print $a;   # prints something like SCALAR(0x1214f94)
print $$a;  # prints 1
于 2011-08-11T16:36:01.397 に答える
1

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

たとえば、Variant オブジェクトに日付がある場合、次のような文字列として取得できます。

my $string = $date->Date("yyyy-MM-dd");
于 2011-08-11T17:53:16.067 に答える