2010-04-07 17 views
23

मैंने वर्तमान समय प्राप्त करने के लिए निम्नलिखित कथनों का उपयोग किया है।टाइमस्टैम्प प्राप्त करने के लिए मैं प्रिंट के साथ पर्ल के लोकलटाइम का उपयोग कैसे करूं?

print "$query executed successfully at ",localtime; 
    print "$query executed successfully at ",(localtime); 
    print "$query executed successfully at ".(localtime); 

आउटपुट

executed successfully at 355516731103960 
executed successfully at 355516731103960 
executed successfully at Wed Apr 7 16:55:35 2010 

पहले दो बयानों एक दिनांक स्वरूप में वर्तमान समय मुद्रण नहीं कर रहे हैं। तीसरा कथन केवल दिनांक प्रारूप में सही आउटपुट दे रहा है।

मेरी समझ पहला है स्केलर संदर्भ में एक मूल्य लौटा रहा है, इसलिए यह संख्या वापस कर रहा है।

फिर दूसरे प्रिंट में मैंने केवल सूची संदर्भ में लोकलटाइम का उपयोग किया, यह संख्या आउटपुट क्यों दे रहा है।

उत्तर

30

शायद सबसे महत्वपूर्ण बात यह आप पर्ल में प्रोग्रामिंग के लिए सीख सकते हैं, संदर्भ है। कई अंतर्निहित subroutines, और ऑपरेटरों, संदर्भ के आधार पर अलग व्यवहार करते हैं।

print "$query executed successfully at ", localtime, "\n"; # list context 
print "$query executed successfully at ",(localtime),"\n"; # list context 
print "$query executed successfully at ". localtime, "\n"; # scalar context 
print "$query executed successfully at ".(localtime),"\n"; # scalar context 

print "$query executed successfully at ", scalar localtime, "\n"; # scalar context 
print "$query executed successfully at ", scalar (localtime),"\n"; # scalar context 

इसे बयानों को विभाजित करके स्पष्ट किया जा सकता है।

my $time = localtime; # scalar context 
print "$query executed successfully at $time\n"; 

my @time = localtime; # list context 
print "$query executed successfully at @time\n"; 
7

scalar बलों अदिश संदर्भ:

print scalar localtime(); 

दूसरे उदाहरण में, यह स्पष्ट रूप से एक सूची संदर्भ है, तो आप सिर्फ एक पंक्ति में संख्या का एक प्रिंटआउट हो रही है। उदाहरण के लिए,

print join (":", (localtime)); 

और आप कोलन के साथ शामिल संख्याएं देखेंगे।

4

पहले और दूसरे दोनों सूची संदर्भ में मूल्यों को वापस लौटते हैं लेकिन संभवत: वे अपेक्षा नहीं करते हैं कि आप क्या उम्मीद करेंगे। लोकल के आसपास के माता-पिता का उपयोग बस कुछ भी उपयोगी नहीं होगा। लेकिन आप उन लौटे सूची आइटम को अलग से प्राप्त करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं:

@list = ($sec,$min,$hour,$day,$mon,$year_1900,$wday,$yday,$isdst)=localtime; 
print join("\n",@list); 
10

localtime के रिटर्न मान संदर्भ पर निर्भर करता। सूची संदर्भ में यह, एक 9 तत्व सूची है, जबकि अदिश संदर्भ में यह एक ctime(3) मूल्य है:

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime; 
my $now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994" 

अब, print अपने तर्कों के लिए सूची संदर्भ प्रदान करता है। यही कारण है कि print localtime सूची से संख्याओं को आउटपुट करता है (डिफ़ॉल्ट रूप से किसी भी विभाजक के बिना)। आप या तो . संयोजन ऑपरेटर (आपके 3rd बयान में की तरह) या scalar का उपयोग कर localtime पर अदिश संदर्भ के लिए मजबूर कर सकते हैं:

print "".localtime; 
print scalar localtime; 
0

आप वर्तमान समय, तुम सिर्फ समारोह समय() का उपयोग कर सकते टाइमस्टैम्प प्राप्त करना चाहते हैं

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

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