首页 文章

Perl中不区分大小写的GREP

提问于
浏览
1

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

use strict

我想通过使用与我拥有的var的大小写敏感内容来从数组中grep一个元素

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

这行给了我错误

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

如何使它工作?

谢谢

2 回答

  • 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 相同 .

  • 5

    如果您在比较之前对它们进行了比较,则可以比较两种不区分大小写的事情:

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

相关问题