当我从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)
成为可读答案。
答案 0 :(得分:1)
作为一般规则,当您获得SCALAR(0x1214f94)
之类的值时,您将打印引用/地址,而不是值。您可以通过在变量前添加美元符号来取消引用:
$a = \$b;
$b = 1;
print $a; # prints something like SCALAR(0x1214f94)
print $$a; # prints 1
答案 1 :(得分:1)
在这种情况下,你得到的是Win32::OLE::Variant对象,当需要比文本更复杂的类型时,它通常从OLE调用返回。请参阅链接页面中列出的方法,并选择适当的方式获取perl表示。
例如,当您在Variant对象中有一个日期时,您可以将其作为字符串获取:
my $string = $date->Date("yyyy-MM-dd");