2014-10-17 11 views
6

mam:Perl tablica sort/list za pomocą przecinka lub kropki na ciąg konkatenacji

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

use strict; 
use warnings; 

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

Wyjścia: abcdePress any key to continue . . . Dlaczego nie ma powrotu linii?

Potem spróbował wykorzystać okresu operator konkatenacji:

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

use strict; 
use warnings; 

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

wyjściowa: 5 Press any key to continue . . .

Dlaczego \n praca tu jednak zwrócić długość tablicy?

Pomogą w tym wszelkie odniesienia do oficjalnej dokumentacji.

+0

Zapraszamy do obejrzenia: http://perldoc.perl.org/perlport.html#Newlines wierzę, że jest to, czego szukasz. A może nawet: http://perldoc.perl.org/functions/say.html – TomDillinger

Odpowiedz

9

Kiedy robisz

print sort @letters . "\n"; 

czego naprawdę robi ocenia @letters w kontekście skalarnym i dodanie nowej linii, a następnie sortowania tej tablicy. Ponieważ tablica ma długość 5, masz numer 5.

Spróbuj tak:

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

i będziesz wyjście:

5 
test 

Zachowanie sort jest niezdefiniowane w Kontekst skalarny. Więc nie może zrobić:

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

Co prawdopodobnie chcesz zrobić jest mniej więcej tak:

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

wyjściowa:

a,b,c,d,e 

Na pierwszym scenariuszu dołączają \n do listy liter, a następnie sortują ją. Więc kończy się na samym początku. Oto przykład

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

Wyjścia:

# it outputs a newline and then the characters: 

123abcde 

Generalnie warto używać nawiasów, aby wyczyścić na zachowanie co chcesz uzyskać.

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

Wyjścia:

abcde 
test 
Powiązane problemy