2012-08-02 19 views
6

क्या perl में चर को जोड़ने के लिए कोई अलग तरीका है? मैंने गलती कोड की निम्न पंक्ति लिखा है:पर्ल में चर को कैसे जोड़ना है?

print "$linenumber is: \n" . $linenumber; 

और उस तरह उत्पादन के परिणामस्वरूप:

22 is: 
22 

मैं उम्मीद कर रहा था:

$linenumber is: 
22 

तो फिर मैंने सोचा। यह चर के संदर्भ के रूप में डबल कोट्स में $linenumber व्याख्या करना होगा। (कितना अच्छा!)

मैं बस सोच रहा हूं: इस विधि का उपयोग करने के लिए चेतावनी क्या हैं और क्या कोई यह बता सकता है कि यह कैसे काम करता है?

+0

तकनीकी तौर पर आप चर को श्रेणीबद्ध करने की जरूरत नहीं है, 'print' एक से अधिक तर्क ले जा सकते हैं के रूप में। 'प्रिंट' $ linenumber है: \ n ', $ linenumber;' साथ ही साथ काम करता है। (हालांकि आपको बिल्ट-इन वैरिएबल '$, '(' मैन perlvar' देखें) के बारे में पता होना चाहिए। – chepner

+1

' '$ linenumber है: \ n'' जो भी आप चाहते हैं वह करने वाला नहीं है :-) –

उत्तर

12

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

print "\$linenumber is: \n" . $linenumber; 

यह के रूप में लिखा जा सकता है:

print '$linenumber is: ' . "\n$linenumber"; # No need to escape `$` 
+0

ओह! उस पर ध्यान नहीं दिया। मैंने इसे अपडेट किया है। धन्यवाद। –

+0

जब वैरिएबल को इंटरपोल करना और परिवर्तनीय नाम सीमा स्पष्ट नहीं है (उदाहरण के लिए "मेरा $ पृष्ठ = 12; प्रिंट" $ पेजपी। "'), आपको ब्रेसिज़ '$ {...} के अंदर परिवर्तनीय नाम संलग्न करना होगा। 'प्रिंट करें" $ {पृष्ठ} पी। "' – Aurimas

1

जब यह प्रतिक्रिया तैयार करने, मैं this webpage जो निम्न जानकारी बताते पाया:

################################################### 
#Note that when you have double quoted strings, you don't always need to concatenate. Observe this sample: 

#!/usr/bin/perl 

$a='Big '; 
$b='Macs'; 
print 'I like to eat ' . $a . $b; 

#This prints out: 
# I like to eat Big Macs 

################################################### 

#If we had used double quotes, we could have accomplished the same thing like this: 

#!/usr/bin/perl 

$a='Big '; 
$b='Macs'; 
print "I like to eat $a $b"; 

#Printing this: 
# I like to eat Big Macs 
#without having to use the concatenating operator (.). 

################################################### 

#Remember that single quotes do not interpret, so had you tried that method with single quotes, like this: 


#!/usr/bin/perl 

$a='Big '; 
$b='Macs'; 
print 'I like to eat $a $b'; 
#Your result would have been: 
# I like to eat $a $b 
#Which don't taste anywhere near as good. 

मैंने सोचा था कि इस समुदाय के लिए मददगार होगा तो मैं इस पूछ रहा हूँ और मेरे अपने सवाल का जवाब। अन्य सहायक उत्तर स्वागत से अधिक हैं!

1

आप इसे प्रिंट करने के लिए $ बैकस्लैश कर सकते हैं।

print "\$linenumber is: \n" . $linenumber; 

जो प्रिंट करता है कि आप क्या उम्मीद कर रहे थे। यदि आप वैरिएबल नामों को इंटरपोलेट करने के लिए पर्ल नहीं चाहते हैं, तो आप सिंगल कोट्स का भी उपयोग कर सकते हैं, लेकिन फिर "\n" को सचमुच इंटरपोल किया जाएगा।

+0

यह एक अच्छा मुद्दा है। कुछ मैं इसका उल्लेख करना भूल गया। सोचा कि यह बिल्कुल सही नहीं है कि मेरा सवाल क्या था। वैसे भी +1। – kentcdodds

+1

सिंगल कोट्स (जैसा कि आपने सुझाव दिया है) का उपयोग करने में समस्या यह है कि यह सचमुच नई लाइन की व्याख्या करेगी, मेरा संपादन देखें। –

3

पर्ल किसी भी में:

print "\$linenumber is: \n$linenumber"; 

स्ट्रिंग प्रक्षेप बचने के लिए, एकल उद्धरण का उपयोग करें डबल कोट्स के साथ बनाया गया स्ट्रिंग इंटरपोलेट किया जाएगा, इसलिए किसी भी चर को इसके मान से बदल दिया जाएगा। यदि आपको $ प्रिंट करने की आवश्यकता है, तो आपको कई अन्य भाषाओं की तरह, आपको इसे बचाना होगा।

print "\$linenumber is:\n$linenumber"; 

या

print "\$linenumber is:\n" . $linenumber; 

या

printf "\$linenumber is:\n%s", $linenumber; 

Scalar Interpolation

2

आप

print "$linenumber is: \n" . $linenumber; 
से अपने कोड को बदलते हैं

को
print '$linenumber is:' . "\n" . $linenumber; 

या

print '$linenumber is:' . "\n$linenumber"; 

यह प्रिंट होगा

$linenumber is: 
22 

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

4

मुझे पसंद = ऑपरेटर विधि:।

#!/usr/bin/perl 
use strict; 
use warnings; 

my $text .= "... contents ..."; # Append contents to the end of variable $text. 
$text .= $text; # Append variable $text contents to variable $text contents. 
print $text; # Prints "... contents ...... contents ..." 
संबंधित मुद्दे