2009-10-20 12 views
6

मैं Data::Dumper::Dumper() विधि का उपयोग कर रहा हूं। उत्पादन अच्छा है, लेकिन थोड़ा कॉम्पैक्ट और अधिक अच्छी लग रही हो सकती है।मैं डेटा :: डम्पर के आउटपुट के स्वरूपण को कैसे नियंत्रित कर सकता हूं?

मैं इसे कैसे नियंत्रित कर सकता हूं? बेहतर विकल्प क्या हैं?

+3

:

use Data::Dumper::Concise; warn Dumper($var); 

के बराबर है? – innaM

+3

मनी गूंजना: आपको दस्तावेज़ों को पढ़ना चाहिए और यह बताएं कि आपको उन सुधारों के मुकाबले अन्य सुधारों की आवश्यकता है जिन्हें ट्विकिंग पैरामीटर द्वारा हासिल किया जा सकता है। –

+1

मुझे आशा है कि आप इसे उत्पादन के लिए उपयोग नहीं कर रहे हैं, क्योंकि यही कारण है कि मैं देख सकता हूं कि आप इसे सुंदर बनाना चाहते हैं। यह डेटा संरचना दिखाता है। यह सुंदर होना चाहिए नहीं है। –

उत्तर

20

डेटा :: डम्पर के समान कुछ के लिए Data::Dump पर एक नज़र डालें लेकिन सुंदर प्रिंटिंग पर तर्कसंगत रूप से बेहतर है।

संपादित करें (20,120,304): मैं पूरी तरह से इस सवाल भूल गया था, लेकिन यह आज upvoted किया गया था और है कि मेरी स्मृति jogged। अगर मुझे पर्ल में सुंदर प्रिंटिंग के लिए आज (3 साल बाद) कुछ भी सिफारिश करनी पड़ी, तो मैं निश्चित रूप सेData::Printer के साथ जाऊंगा। डाटा :: प्रिंटर की अपनी दलील से:।

डाटा :: डम्पर एक बेहतरीन टूल, एक तरह से वे eval जा रहा है के लिए उपयुक्त हैं में डेटा संरचनाओं stringify करने के लिए होती है 'में वापस एड

बात है, निरीक्षण और डिबगिंग के लिए स्क्रीन पर डेटा संरचनाओं और ऑब्जेक्ट्स प्रिंट करने के लिए बहुत से लोग इसका उपयोग करते हैं (और समान डेटा, जैसे डेटा :: डंप), और जब आप उस मॉड्यूल का उपयोग कर सकते हैं, तो इसका मतलब यह नहीं है कि इसका मतलब है होना चाहिए।

यह जहां डाटा :: प्रिंटर में आता है यह एक बात है और केवल एक ही काम करते हैं करने के लिए है:। प्रदर्शन पर्ल चर और वस्तुओं स्क्रीन पर, ठीक से प्रारूपित (एक मानव द्वारा निरीक्षण किया जाना है)

3

एक वैकल्पिक *Data::Dumper करने के लिए JSON हो सकता है और इसकी पर्ल कार्यान्वयन JSON होगा।

* चाहे यह बेहतर है कि आप निर्णय ले सकें।

+3

यह क्रॉस-प्लेटफ़ॉर्म या क्रॉस-भाषा संचार के लिए निश्चित रूप से बेहतर है, जैसे कि जावास्क्रिप्ट या फ्लैश एप्लिकेशन द्वारा प्राप्त डेटा संरचना तैयार करना। अधिकांश आधुनिक भाषाओं के लिए जेएसओएन पुस्तकालय हैं, और कई पोस्ट-आधुनिक और कमजोर भी हैं। :) – Ether

5

यदि आप भंडारण के लिए आउटपुट को क्रमबद्ध करना चाहते हैं (प्रदर्शन के बजाए), Storable के freeze() और thaw() पर एक नज़र डालें। जब भी मैं डेटा :: डम्पर को डीबी या कैश में डेटा संरचनाओं को सहेजने के लिए उपयोग किया जाता है, तो मैं क्रिंग करता हूं। :(

4

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

2

तुम सिर्फ डंप उत्पादन के लिए देख रहे हैं :। Smart::Comments

तुम बस use यह

use Smart::Commments; 

और फिर आप, एक तीन हैश टिप्पणी में किसी भी साधारण चर डाल तो जैसे:।

my $v = black_box_process(); 
### $v 

और यह लगभग सबसे सुंदर प्रिंट में इसे बाहर निकाल देता है।

तुम भी तो की तरह अधिक जटिल भाव का प्रबंधन कर सकते हैं:

### ($a && ($b^($c || $d))) : ($a && ($b^($c || $d))) 

लेकिन आप "पेट के पथ" के लिए यह देखने के लिए।

### $My::Package::variable 

या

###% मेरे :: पैकेज ::

कभी नहीं मेरे अनुभव में काम किया है।

my %stash = %My::Package::; 
### %stash 

यह भी अन्य प्यारा चाल है, जो आप यदि आप दस्तावेज़ पढ़ देख सकते हैं की एक संख्या है: अगर मैं उन्हें फिर से काम करना चाहते मैं कुछ इस तरह की जरूरत है।

2

एक विकल्प Data::Dumper::Perltidy का उपयोग करना है जो डेटा :: डम्पर :: डूपर() के लिए एक (अधिक या कम) ड्रॉप-इन प्रतिस्थापन है, लेकिन आउटपुट प्रारूपित करने के लिए पर्ल्टिडी का उपयोग करता है।

2

Data::Dumper::Concise एक और संभावना है। क्या वास्तव में यह आप डेटा :: डम्पर के उत्पादन के बारे में पसंद नहीं है है

use Data::Dumper; 
{ 
    local $Data::Dumper::Terse = 1; 
    local $Data::Dumper::Indent = 1; 
    local $Data::Dumper::Useqq = 1; 
    local $Data::Dumper::Deparse = 1; 
    local $Data::Dumper::Quotekeys = 0; 
    local $Data::Dumper::Sortkeys = 1; 
    warn Dumper($var); 
} 
संबंधित मुद्दे