我需要提取除最後一個數組之外的所有元素,並將它們存儲在標量中供以後使用。 起初,我認爲這可能會使用數組切片,但看起來你不能倒數。 例如:perl - 如何提取除最後一個數組外的所有元素?
my $foo = ($bar[0..-2]);
或
my $foo = ($bar[-2..0]);
任何幫助,因爲這是開始讓我發瘋不勝感激,我一直無法找到一個解決方案的其他地方或通過實驗。
奧斯卡
我需要提取除最後一個數組之外的所有元素,並將它們存儲在標量中供以後使用。 起初,我認爲這可能會使用數組切片,但看起來你不能倒數。 例如:perl - 如何提取除最後一個數組外的所有元素?
my $foo = ($bar[0..-2]);
或
my $foo = ($bar[-2..0]);
任何幫助,因爲這是開始讓我發瘋不勝感激,我一直無法找到一個解決方案的其他地方或通過實驗。
奧斯卡
my $foo = join ',', @bar[0..$#bar-1];
將串聯(用逗號)@bar陣列中的所有元素,除了最後一個成FOO。
問候
RBO
感謝您的快速回答,您爲我節省了很多時間和挫折。 – 2010-08-17 16:06:08
這將存儲所有的數組元素,除了最後,爲標量。每個數組元素將被一個空格分開。
use strict;
use warnings;
my @nums = 1 .. 6;
my $str = "@nums[0 .. $#nums - 1]";
print $str;
__END__
1 2 3 4 5
難道你不是真的想將元素存儲到另一個數組嗎?如果將它們存儲爲標量,則檢索它們可能會有問題。在我上面的例子中,如果數組中的任何元素已經有一個空格,那麼您將無法從標量中正確重建數組。
感謝您的好回覆,但沒有我想將它們作爲標量存儲,因爲我想將「姓氏名字姓氏」變成「姓氏,姓氏名字首字母」,並且已經提取了姓氏並且添加了逗號它,只是無法得到姓名和首字母縮寫。 – 2010-08-17 16:10:31
my @foo = @bar;
pop @foo;
或
my @foo = @bar[ [email protected] .. -2 ];
或者它是否可以改變@bar,只是
my @foo = splice(@bar, 0, -1);
感謝您的快速回復,我會記住以後的例子,他們可以派上用場 – 2010-08-17 16:11:56
我認爲流行比刪除最後一個元素的拼接好一點:) – 2010-08-19 12:38:37
@brian d foy:我認爲你是對的: ) – ysth 2010-08-19 15:20:47
ITYM'@ foo'和'@bar [...]'。 – 2010-08-17 15:54:35