数组仅在比较时显示第一个值

时间:2014-02-05 18:41:48

标签: arrays perl

我有一个包含几个值的帖子中的数组,我正在尝试进行比较以查看数组是否包含某些字符串。

像这样:

if ($q->param('tradesFour[]') =~ m/Steel/)

数组的datadump看起来像这样:

'tradesFour[]' => [
  'Street/Road',
  'Steel Erection'
],

但是当我这样做时if语句不正确,当我打印tradesFour []时它只给我第一个值。我怎样才能让它正常工作?

1 个答案:

答案 0 :(得分:3)

在标量上下文中,CGI::param只会返回第一个参数值。你必须放入列表上下文来检索所有这些。

您可以像这样编写测试

if (grep /Steel/, $q->param('tradesFour[]')) { ... }

其中检查列表中的所有值并返回与正则表达式匹配的数量。