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