2011-08-11 3 views
0

엑셀 파일에서 텍스트를 추출하면 Win32::OLE::Variant=SCALAR(0x1214f94)이됩니다. 이것을 어떻게 Perl 변수로 변환합니까?Win32 :: OLE :: Variant를 perl 변수로 변환 하시겠습니까?

내가 할 필요가 모든 use Win32::OLE::Variant를 입력하고 Win32::OLE::Variant=SCALAR(0x1214f94)가 읽을 수있는 대답이되었다 : 나는 값 기능을 사용하려고하면 그냥 @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"; 
    } 
} 

UPDATE를 인쇄합니다.

답변

1

일반적으로 SCALAR(0x1214f94)과 같은 값을 얻으면 값이 아닌 참조/주소를 인쇄합니다. 당신은 역 참조 변수 앞에 달러 기호를 추가 할 수 있습니다

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

을이 경우에, 당신이 얻고있는 것은 텍스트보다 더 복잡한 유형이 필요할 때 호출하는 자주 OLE에서 반환, Win32::OLE::Variant 개체입니다. 링크 된 페이지에 나열된 방법을보고 적절한 perl 표현을 선택하십시오. 당신이 변형 객체의 날짜가있을 때

예를 들어, 다음과 같은 문자열로 얻을 수 있습니다 :

my $string = $date->Date("yyyy-MM-dd"); 
관련 문제