2010-05-01 14 views
9

मैं पर्ल के लिए नया हूं और मुझे एक समस्या है जो बहुत आसान है लेकिन मेरी पर्ल पुस्तक से परामर्श करते समय मुझे जवाब नहीं मिल रहा है।मैं नेस्टेड पर्ल हैश के मूल्य तक कैसे पहुंच सकता हूं?

Dumper($request); 

मैं निम्नलिखित परिणाम प्राप्त करने का परिणाम मुद्रण जब:

$VAR1 = bless({ 
      '_protocol' => 'HTTP/1.1', 
      '_content' => '', 
      '_uri' => bless(do{\(my $o = 'http://myawesomeserver.org:8081/counter/')}, 'URI::http'), 
      '_headers' => bless({ 
            'user-agent' => 'Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.4) Gecko/20080528 Epiphany/2.22 Firefox/3.0', 
            'connection' => 'keep-alive', 
            'cache-control' => 'max-age=0', 
            'keep-alive' => '300', 
            'accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
            'accept-language' => 'en-us,en;q=0.5', 
            'accept-encoding' => 'gzip,deflate', 
            'host' => 'localhost:8081', 
            'accept-charset' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7' 
            }, 'HTTP::Headers'), 
      '_method' => 'GET', 
      '_handle' => bless(\*Symbol::GEN0, 'FileHandle') 
      }, 'HTTP::Server::Simple::Dispatched::Request'); 

मैं '_method' ('प्राप्त') या 'होस्ट' की के मूल्यों कैसे उपयोग कर सकते हैं ('स्थानीय होस्ट: 8081')।

मुझे पता है कि यह एक आसान सवाल है, लेकिन पर्ल शुरुआत में कुछ हद तक गुप्त है।

+0

यदि आप सुनिश्चित नहीं हैं कि किसी ऑब्जेक्ट का उपयोग कैसे करें, तो आपको डेटा :: डम्पर के लिए पढ़ने से पहले * ऑब्जेक्ट का उपयोग कर रहे ऑब्जेक्ट के लिए प्रलेखन पढ़ना चाहिए। कृपया एक्समन के जवाब पर ध्यान दें। – Ether

उत्तर

12

Narthring यह सही जहाँ तक जानवर बल पद्धति के रूप में है। नेस्टेड हैश तो जैसे कुंजी चेनिंग से संबोधित कर रहे हैं:

$hash{top_key}{next_key}{another_key}; # for %hash 
# OR 
$hash_ref->{top_key}{next_key}{another_key}; # for refs. 

लेकिन जब से इन "हैश" के दोनों धन्य वस्तुओं रहे हैं। यह HTTP::Server::Simple::Dispatched::Request पर पढ़ने मदद कर सकता है, जो आपको बता सकता है कि यह एक HTTP::Request वस्तु और header और method तरीकों पर HTTP::Request अनुभाग को देख रहा है, आपको बताता है कि निम्नलिखित चाल करना: सच में

my $method = $request->method(); 
my $host = $request->header('host'); 

, मैं तुम्हें सलाह देते हैं firefox search plugin called Perldoc Module::Name प्राप्त करें और जब आप डम्पर आउटपुट का सामना करते हैं जो कहता है "आशीर्वाद ... 'कुछ :: मॉड्यूल :: नाम'" आप इसे केवल खोज प्लगइन में कॉपी और पेस्ट कर सकते हैं और सीपीएएन पर दस्तावेज़ पढ़ सकते हैं।

+2

+1। मैं अक्सर शुरुआती पर्ल प्रोग्रामर द्वारा डेटा :: डम्पर के उपयोग पर प्रतिबंध लगाने की कामना करता हूं, क्योंकि यह हर ऑब्जेक्ट को आंखों को खोलने के लिए खोलता है और ऑब्जेक्ट तक पहुंचना आसान होता है और पढ़ने के बजाय हैश से वांछित मूल्य को पकड़ना आसान हो जाता है प्रलेखन * और उचित एक्सेसर विधियों का उपयोग कर। अगले संशोधन में क्षेत्र का प्रतिनिधित्व कब बदलता है जब आप क्या करेंगे? यह एक पर्ल सम्मेलन है कि ** निजी मूल्य अंडरस्कोर ** से शुरू होते हैं और ** सीधे कभी नहीं पहुंचाया जाना चाहिए **। – Ether

+1

डेटा :: डम्पर बहुत उपयोगी है, लेकिन विशेष रूप से शुरुआती लोगों के लिए अमूल्य है। –

+1

@ पेड्रो सिल्वा: मैं सहमत हूं। यह वास्तव में एक व्यापार बंद है। मैंने दीवार के खिलाफ कुछ कोडर बैंग देखा है। * अगर वे केवल देख सकें कि डीबीआई कॉल वापस लौट रहा था *। जिस व्यक्ति को मैंने डीडी दिखाया था, वह बहुत आभारी था, और उसने अपनी परियोजना को बहुत बढ़ाया। यह एक अंधेरे कमरे के आसपास महसूस करने से निश्चित रूप से बेहतर है। चूंकि [स्मार्ट :: टिप्पणियां] ढूंढना (http://search.cpan.org/perldoc?Smart:: टिप्पणी), मैं साथी डेवलपर्स को यह देखने की सिफारिश कर रहा हूं कि देखने में सक्षम होने के करीब-करीब आपका कोड वास्तव में क्या कर रहा है। हालांकि, "ऑब्जेक्ट्स" होने वाली हड्डियों को दिखाने में भी इसकी कमी है। – Axeman

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