1

我有一个使用严格的 Perl 脚本

use strict

我想通过使用不区分大小写的比较与我拥有的 var 从数组中 grep 元素

my ($sPermIdIndex) = grep $aHeaderLine[$_] eq $sPermIdField/i, 0 .. $#aHeaderLine;

这一行给我错误

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

如何让它发挥作用?

谢谢

4

2 回答 2

5

如果在比较之前将它们折叠起来,则可以不区分大小写地比较它们:

fc("Foo") eq fc("fOO")
于 2013-08-21T10:05:03.887 回答
3

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

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

它的工作原理与使用 regex 相同$aHeaderLine[$_] =~ /^\Q$sPermIdField\E\z/i

于 2013-08-21T10:05:05.360 回答