2010-08-17 18 views
10

Sonuncu hariç bir dizideki tüm öğeleri ayıklamam ve daha sonra kullanmak üzere bir skaler halinde saklamalıyım. İlk olarak, bunun dizi dilimleri kullanarak mümkün olacağını düşündüm, ancak geriye doğru sayamadığınız anlaşılıyor. Örneğin : bu deli beni götürmek başlıyor olarakperl - Sonuncu hariç bir dizinin tüm öğelerini nasıl ayıklarsınız?

my $foo = ($bar[0..-2]); 

veya

my $foo = ($bar[-2..0]); 

Herhangi bir yardım

büyük takdir ve ben başka bir yerde veya deneyerek bir çözüm bulmak mümkün olmuştur.
Oskar

+1

ITYM '@ foo' ve' @bar [...] '. –

cevap

16

my $foo = join ',', @bar[0..$#bar-1];

(virgül ile) sıralamak olacak foo.

Selamlar Bu bir sayısal alan içine, son dışındaki tüm dizi öğelerini saklar

+1

Hızlı cevap için teşekkürler, bana çok zaman ve hayal kırıklığı kurtardınız. –

2
@foo = @bar[0 .. $#foo - 1]; 

bir kafa kaşıyıcı oluşturmak istiyorsanız: sonuncusu hariç dizinin tüm unsurları @bar içine

my @x = (1, 2, 3); 
print "@x[[email protected] .. -2]"; 
2

rbo. Her dizi öğesi, tek bir boşlukla ayrılacaktır.

use strict; 
use warnings; 

my @nums = 1 .. 6; 
my $str = "@nums[0 .. $#nums - 1]"; 
print $str; 

__END__ 

1 2 3 4 5 

Öğeleri gerçekten başka bir dizide saklamak istemiyor musunuz? Bunları bir skalerde saklarsanız, bunları almak sorunlu olabilir. Yukarıdaki örneğimde, dizinin herhangi bir öğesi zaten tek bir alana sahipse, diziyi skalerden düzgün bir şekilde yeniden yapılandıramazsınız.

+1

iyi yanıt için teşekkürler ama hayır "forename initial (s)" soyadını "soyadı, forename ilk (ler)" e çevirmek istediğim ve zaten soyadı eklediğim ve virgül eklediğim için bunları bir skalar olarak saklamak istiyorum Bu, sadece forename ve ilk (ler) alamadım. –

10
my @foo = @bar; 
pop @foo; 

veya

my @foo = @bar[ [email protected] .. -2 ]; 

veya @bar değiştirmek etmenizin uygun olup olmadığını

, sadece

my @foo = splice(@bar, 0, -1); 
+0

hızlı cevap için teşekkürler, daha sonra için örnekler hatırlayacağım, onlar kullanışlı gelebilir –

+0

Ben pop son bileşeni kaldırmak için ekleme biraz daha güzel olduğunu düşünüyorum :) –

+0

@brian d foy: Bence haklısın:) – ysth

İlgili konular