2014-10-17 5 views
6

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

#!c:\Dwimperl\perl\bin\perl.exe 

use strict; 
use warnings; 

# define an array 
my @letters = ('b', 'c', 'a', 'e', 'd'); 
print sort @letters , "\n"; 

आउटपुट: abcdePress any key to continue . . . क्यों वहाँ कोई लाइन वापसी है?

मैं तो अवधि संयोजन ऑपरेटर का उपयोग करने की कोशिश की:

#!c:\Dwimperl\perl\bin\perl.exe 

use strict; 
use warnings; 

# define an array 
my @letters = ('b', 'c', 'a', 'e', 'd'); 
print sort @letters . "\n"; 

आउटपुट: 5 Press any key to continue . . .

क्यों यहाँ \n काम लेकिन सरणी लंबाई वापसी करता है?

आधिकारिक दस्तावेज़ीकरण के लिए कोई भी संदर्भ मदद करेगा।

+0

पर एक नज़र डालें। या शायद यहां तक ​​कि: http://perldoc.perl.org/functions/say.html – TomDillinger

उत्तर

9

जब आप ऐसा करेंगे

print sort @letters . "\n"; 

आप वास्तव में क्या कर रहे हैं अदिश संदर्भ में @letters मूल्यांकन कर रही है और एक नई पंक्ति जोड़कर, और फिर उस सरणी छँटाई। के बाद से सरणी लंबाई 5 की है, तो आप नंबर मिल 5.

इस तरह यह प्रयास करें:

my @letters = ('b', 'c', 'a', 'e', 'd'); 
print sort(@letters . "\ntest"); 

और तुम हूँ उत्पादन:

5 
test 

sort के व्यवहार में अपरिभाषित है स्केलर संदर्भ। तो तुम ऐसा नहीं कर सकते:

my @letters = ('b', 'c', 'a', 'e', 'd'); 
print join(",", sort(@letters)) . "\n"; 

आउटपुट::

my @letters = ('b', 'c', 'a', 'e', 'd'); 
print sort(@letters) . "\n"; 
# This produces no output 

क्या आप शायद क्या करना चाहते हैं कुछ इस तरह है

a,b,c,d,e 

पहले परिदृश्य के लिए, आप अक्षरों की सूची में \n जोड़ रहे हैं, और फिर इसे सॉर्ट कर रहे हैं। तो यह शुरुआत में समाप्त होता है।

# it outputs a newline and then the characters: 

123abcde 

सामान्य तौर पर, यह क्या व्यवहार आप प्राप्त करना चाहते हैं पर स्पष्ट करने के लिए कोष्ठकों का प्रयोग करने के लिए उपयोगी है: यहाँ एक उदाहरण

my @letters = ('b', 'c', 'a', 'e', 'd'); 
print sort @letters , "\n", 1, 2, 3; 

आउटपुट है। मुझे विश्वास है कि है आप के लिए क्या देख रहे http://perldoc.perl.org/perlport.html#Newlines:

my @letters = ('b', 'c', 'a', 'e', 'd'); 
print sort(@letters), "\ntest"; 

आउटपुट:

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