# data $bug
{ 
 'keyword_objects' => [ 
    bless( { 'id' => 15, 'name' => 'CRASH'}, 'SomeModule::SomeFilename' ), 
    bless( { 'id' => 6, 'name' => 'CUSTOMER' }, 'SomeModule::SomeFilename' ) ],
 'category' => 'error'
}
   foreach my $keyword ($bug->{keyword_objects}) {
     print Dumper($keyword);
   }

यह इसमें अलग-अलग आइटम के बजाय संपूर्ण keyword_objects प्रिंट करता है। अब आपके लिए यह स्पष्ट होना चाहिए कि मैं पर्ल के बारे में बहुत कम जानता हूं, मैं यह भी पूछना चाहता हूं कि प्रत्येक कीवर्ड में name को संदर्भित करने का सही तरीका क्या है।

1
PuffedRiceCrackers 19 नवम्बर 2020, 14:33

1 उत्तर

सबसे बढ़िया उत्तर

अपने सरणी रेफरी में तत्वों पर पुनरावृति करने के लिए, आपको इसे dereference करने की आवश्यकता है। foreach को एक सूची चाहिए।

foreach my $keyword ( @{ $bug->{keyword_objects} } ) {

आपकी वस्तुएं हैश संदर्भ हैं, इसलिए आप इस तरह उनके आंतरिक में पहुंच सकते हैं:

$keyword->{name}

हालाँकि, आंतरिक के साथ खिलवाड़ करना एक अच्छा विचार नहीं है। इसके बजाय, आपको एक्सेसर्स लिखना चाहिए और उन्हें एक विधि के रूप में कॉल करना चाहिए।

$keyword->name
5
simbabque 19 नवम्बर 2020, 14:35