2012-11-19 4 views
18

में वाक्यविन्यास मैं पर्ले में निम्नलिखित वाक्यविन्यास के बारे में और कहां पा सकता हूं?<DATA> perl

<DATA> और __DATA__ के बीच कनेक्शन अस्पष्ट है।

while (my $date_string = <DATA>) { 
    chomp($date_string); 
    next if not length $date_string; 
    print "$date_string ist Unixtime ", 
     $lang_date->str2time($date_string), 
     " und ", 
    $lang_date->time2str('%d.%m.%Y %T (%Z)',$lang_date->str2time($date_string)), 
     "\n"; 
} 

__DATA__ 
1.3.1999 
1 Marz 1999 
1. Marz 1999 
1/3/1999 
+4

'__DATA__' हैंडल के साथ मज़ा: http://stackoverflow.com/questions/4459601/how-can-i-use-data-twice, http://stackoverflow.com/a/10353338/168657 – mob

उत्तर

27

का हवाला देते हुए the doc:

__DATA__ टोकन पर्ल संकलक कि संकलन के लिए पर्ल कोड समाप्त हो गया है बताता है। __DATA__ टोकन के बाद

सब कुछ filehandle FOOBAR::DATA, जहां FOOBAR वर्तमान पैकेज के नाम पर जब __DATA__ टोकन तक पहुँच जाता है है के माध्यम से पढ़ने के लिए उपलब्ध है।

यह सिर्फ एक ही रूप में __END__ पैकेज में 'मुख्य' करता है काम करता है, लेकिन __END__ के बाद अन्य मॉड्यूल डेटा के लिए, स्वचालित रूप से पुनः प्राप्त करने योग्य नहीं है जबकि __DATA__ के बाद डाटा नहीं है।

केवल इसमें जोड़ सकते हैं कि __DATA__ अनुभाग का उपयोग करके पर्ल में कुछ फ़ाइल पढ़ने-संबंधित अवधारणाओं को चित्रित करने के लिए काफी आसान है। यह मूल रूप से एक कोड से जुड़ी फाइल है, और इस फ़ाइल की सामग्री <DATA> के माध्यम से आसानी से सुलभ हो सकती है। यही कारण है कि यह एसओ पर काफी लोकप्रिय है।)

5

सब कुछ के बाद __DATA__ आप जिस फ़ाइल को filehandle DATA से पढ़ सकते हैं के रूप में व्यवहार किया जाता है सरकारी दस्तावेज़ http://perldoc.perl.org/perldata.html देखें और। DATA स्वचालित रूप से खोला गया है और आपको इसे पाने के लिए कुछ भी करने की ज़रूरत नहीं है।

क्या स्पष्ट नहीं है? आपका प्रोग्राम ठीक से इसका उपयोग कर रहा है।

+0

इसकी नहीं मेरा कार्यक्रम, यह इंटरनेशनल पर मिले कोड की एक शांति है और समझ में नहीं आया – Skip