2

我正在从用作参数列表的数据文件构建一个数组到缓存的 SQL 语句。这适用于针对 Oracle 数据库运行的 perl DBI。

例如:

@params = ("This", "that", "NULL", "finish");

我需要将其更改为:

@params = ("This", "that", undef, "finish");

我已经对此进行了谷歌搜索,并建议使用 s/// 进行字符串替换。我不知道如何在给定条件下取消定义数组中的元素。

4

3 回答 3

6
for (@params) { $_ = undef if $_ eq 'NULL'; }
于 2013-02-06T15:01:53.000 回答
5

@params = map { $_ eq 'NULL' ? undef : $_ } ("This", "that", "NULL", "finish");应该这样做。

于 2013-02-06T15:02:29.213 回答
1

这可以非常简单地使用以下for提供的列表循环来完成grep

undef $_ for grep $_ eq 'NULL', @params;
于 2013-02-06T15:13:54.410 回答