将数组中的"NULL"字符串更改为数组perl中的undef

Dan*_* S. 2 arrays perl

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

例如:

@params = ("This", "that", "NULL", "finish");
Run Code Online (Sandbox Code Playgroud)

我需要将此更改为:

@params = ("This", "that", undef, "finish");
Run Code Online (Sandbox Code Playgroud)

我用google搜索了这个,用s ///建议用于字符串替换.我不知道如何为给定条件取消数组中的元素.

ike*_*ami 6

for (@params) { $_ = undef if $_ eq 'NULL'; }
Run Code Online (Sandbox Code Playgroud)

  • @nickisfat:`map`应该用于将一个列表转换为另一个列表.在这里,没有新的列表被转换,所以`for`是一个更好的结构.如果你真的想使用`map`,`@params = map {$ _ eq'NULL'?undef:$ _} @params;`是一种方法,尽管有不必要的复杂功能. (3认同)

Dav*_*man 5

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