我使用Perl,我想在循環中創建變量。所以每個循環都會爲我創建一個具有不同數值的變量。 例如 第一個環路將創建:如何在Perl中使用for循環創建變量?
num1 = x;
第二環路將創建
num2 =x;
感謝您的幫助
我使用Perl,我想在循環中創建變量。所以每個循環都會爲我創建一個具有不同數值的變量。 例如 第一個環路將創建:如何在Perl中使用for循環創建變量?
num1 = x;
第二環路將創建
num2 =x;
感謝您的幫助
使用一個陣列,並添加了一些每一次迭代。
my @nums;
for (1..10) {
push @nums, $_; # your `x'
}
如果你真的需要名他們,那麼哈希應該做的一樣好。我不要推薦這個,但你可以做到這一點。我只是向你展示如何以系統的方式「命名」事物,就像你使用一流的變量一樣。
my %hash;
my $i = 0;
for (@list) {
$hash{ 'num' . ++$i } = $_;
}
再次,這是相當無意義的名號碼根據自己的訂單時的陣列有類似的功能,再加上你永遠不必擔心字典順序的方式獲得。
因此,您應該考慮通過命名變量來解決您試圖解決的問題,以便確定這是否是最佳方式。
我剛剛回想起我所做的,當我想輸入儘可能少的標量語法。它依賴於*_
是一個glob,但GLOB中沒有使用某些插槽。
所以你可以使用local %_
;
因此僅存在額外的字符與任何這種類型的僞變量的輸入:
$_{num001} += 43;
當然,這是你必須鍵入
的多餘的字符相同的量$v{num001} += 43;
以及。
雖然sprintf使它看起來有些過於複雜,但我原則上同意:如果您需要將命名數據添加到以後要使用的知識池中,請使用散列。如果您需要一組有序的數據,請使用數組。 –
@JoelBerger,通過lex命令(通常在其他人的代碼中)有足夠的插入,對於我來說,使用'sprintf'格式規範連接字符串和數字是我的第二天性。 – Axeman
有沒有辦法做到這一點沒有數組? – adir
@adir - 是的,但它是邪惡的,不合邏輯的,愚蠢的,緩慢的,也是調試的噩夢。這正是陣列設計的目的。 – Quentin
@Quentin - 謝謝 – adir