Perl中不区分大小写的GREP

时间:2013-08-21 10:02:13

标签: linux perl grep

我有一个使用严格

的Perl脚本
use strict

我想通过使用与我有

的var的大小写敏感内容来从数组中grep一个元素
my ($sPermIdIndex) = grep $aHeaderLine[$_] eq $sPermIdField/i, 0 .. $#aHeaderLine;

这一行给我错误

Bareword "i" not allowed while "strict subs" in use

如何让它发挥作用?

由于

2 个答案:

答案 0 :(得分:5)

如果你在比较之前foldcase,你可以比较两种不区分大小写的东西:

fc("Foo") eq fc("fOO")

答案 1 :(得分:3)

您可以使用fc折叠两个字符串并进行比较

my ($sPermIdIndex) = grep { 
  # use v5.16; or prefix with CORE::
  CORE::fc($aHeaderLine[$_]) eq CORE::fc($sPermIdField) 
}
0 .. $#aHeaderLine;

它与使用正则表达式$aHeaderLine[$_] =~ /^\Q$sPermIdField\E\z/i相同。