你可以用下面的代碼來實現。
my @word = qw /STA_DATA1 STA_DT STR_DATE TMP_DTE VAL1/;
my @converted_word = map {/DT|DATE|DTE/ ? "char($_)" : $_} @word;
這將會讀取@word數組的每個元素,並且如果元素包含DT或DATE或DTE它將與包裝它「炭()」並將其放置在@converted_word陣列英寸否則它只會將字符串放入@converted_word數組中。
下面的代碼示例來顯示它的工作。
use strict;
use Data::Dumper;
my @word = qw /STA_DATA1 STA_DT STR_DATE TMP_DTE VAL1/;
my @converted_word = map {/DT|DATE|DTE/ ? "char($_)" : $_} @word;
print Dumper(\@word,\@converted_word);
輸出
$VAR1 = [
'STA_DATA1',
'STA_DT',
'STR_DATE',
'TMP_DTE',
'VAL1'
];
$VAR2 = [
'STA_DATA1',
'char(STA_DT)',
'char(STR_DATE)',
'char(TMP_DTE)',
'VAL1'
];
for循環也可以工作。然而,問題說**執行任何數組元素具有替代作爲DTorDATE或DTE應該被轉換並保存在新的數組如下**。所以你應該更新for循環以將數據放入新數組中而不是更新現有數組中的數據。 –
你說得對。最簡單的方法就是將數組複製到新數組並循環到新數組中。這就是'map'非常好的地方(在複製的時候進行修改)問題在於map對於某些人來說可能很難理解,使用'for'循環時,必須小心不要觸及索引項。 –