我正在从一个数据文件构建一个数组,该数据文件用作缓存SQL语句的参数列表。这适用于针对Oracle数据库运行的perl DBI。
例如:
@params = ("This", "that", "NULL", "finish");
我需要将其更改为:
@params = ("This", "that", undef, "finish");
我已经google了这个,并且建议用字符串替换s ///地图。我不知道如何为给定条件取消数组中的元素。
答案 0 :(得分:6)
for (@params) { $_ = undef if $_ eq 'NULL'; }
答案 1 :(得分:5)
@params = map { $_ eq 'NULL' ? undef : $_ } ("This", "that", "NULL", "finish");
应该这样做。
答案 2 :(得分:1)
这可以非常简单地在for
提供的列表上使用grep
循环完成:
undef $_ for grep $_ eq 'NULL', @params;