2011-02-01 12 views
6
foreach my $row (1..$end) 
{ 
    foreach my $col (3..27) 
    { 
    # skip empty cells 
    next unless defined 
    $worksheet->Cells($row,$col)->{'Value'}; 

    # print out the contents of a cell 
    $var = $worksheet->Cells($row,$col)->{'Value'};  
    push @dates, $var; 

    print $var; #this prints the value just fine 
    } 
} 

my %hash; 
$hash{'first'} = \@dates; 
print Dumper \%hash; #This prints object information 

मैं पर्ल के लिए मॉड्यूल OLE और मैं तो मेरे कार्यपत्रक और प्रिंट $ वर से प्राप्त प्रत्येक मान मैं उम्मीद मूल्य प्राप्त उपयोग कर रहा हूँ के बजाय वस्तुओं दिखाता है, लेकिन जब मैं एक में सब कुछ डाल दिया हैश यह प्रिंट करता है:पर्ल के डाटा :: डम्पर मूल्यों

'first' => [ 
bless(do{\(my $o = 15375916)}, 'OLE::Variant'), 
bless(do{\(my $o = 15372208)}, 'OLE::Variant'), 

और आगे। मुझे हैश के बारे में कुछ समझना नहीं चाहिए, क्योंकि मैं वास्तव में यहां फंस गया हूं।

उत्तर

10

push @dates, $var, अपने @dates सरणी पर एक OLE::Variant वस्तु धक्का print $var कॉल जबकि अंतर्निहित OLE::Variant एक स्ट्रिंग के लिए वस्तु कन्वर्ट करने के लिए विधि।

आप भी @dates सिर्फ अंतर्निहित स्ट्रिंग मूल्यों और नहीं खुद वस्तुओं को शामिल करना चाहते हैं,

push @dates, "$var"; 

जो यह @dates सरणी में डालने से पहले की तारीख वस्तु stringify होगा कहते हैं।

+0

मैंने सोचा कि यह ऐसा कुछ आसान था। धन्यवाद! – Melissa

3

$worksheet->Cells($row,$col)->{'Value'} कॉल द्वारा लौटाए गए मान वे ऑब्जेक्ट्स हैं जो ज्यादातर प्रकृति में सी/सी ++ हैं, और पर्ल केवल ऑब्जेक्ट पर एक हैंडल है, जो स्मृति स्थान द्वारा प्रदर्शित होता है (जिसे आप डंप में एक बड़े पूर्णांक के रूप में देखते हैं)। अंतर्निहित सी/सी ++ पुस्तकालयों को लपेटने वाले कई सीपीएएन मॉड्यूल एक ही तरीके से व्यवहार करते हैं (XML :: LibXML उदाहरण पर है जो दिमाग में आ जाता है)। संक्षिप्त जवाब यह है कि, ऑब्जेक्ट ऑब्जेक्ट है, और यह दुर्भाग्यवश डेटा :: डूपर के माध्यम से आप देख सकते हैं। वे अनिवार्य रूप से धन्य स्केलर संदर्भ हैं, और उन पर सभी संचालन विधियों के माध्यम से हैं, न कि अंतर्निहित संदर्भ के वास्तविक मूल्य के माध्यम से।

+0

+1 उत्कृष्ट स्पष्टीकरण; बहुत उच्च स्तर नहीं, बहुत कम स्तर नहीं – daxim

संबंधित मुद्दे