114 sub selection() {
115 foreach my $msg (keys(%id)) {
116 if ($opt{f}) {
117 # Match sender address
118 next unless ($id{$msg}{from} =~ /$opt{f}/); # here
119 }
120 if ($opt{r}) {
121 # Match any recipient address
122 my $match = 0;
123 foreach my $rcpt (@{$id{$msg}{rcpt}}) {
124 $match++ if ($rcpt =~ /$opt{r}/); # or here
125 }
126 next unless ($match);
127 }
128 if ($opt{s}) {
129 # Match against the size string.
130 next unless ($id{$msg}{size} =~ /$opt{s}/);
131 }
132 if ($opt{y}) {
133 # Match younger than
134 next unless ($id{$msg}{ages} $opt{o});
139 }
140 if ($opt{z}) {
141 # Exclude non frozen
142 next unless ($id{$msg}{frozen});
143 }
144 if ($opt{x}) {
145 # Exclude frozen
146 next if ($id{$msg}{frozen});
147 }
148 # Here's what we do to select the record.
149 # Should only get this far if the message passed all of
150 # the active tests.
151 $id{$msg}{d} = 1;
152 # Increment match counter.
153 $mcount++;
154 }
155 }
正如另一位先生所指出的,exiqgrep 程序只是一个 perl 脚本。它获取传递给 -r 函数(接收者)的原始值并在模式匹配中使用它。模式匹配是一个简单的
$rcpt =~ /$opt{r}/
perl 测试,默认匹配,因为它没有指定,是区分大小写的。与 perl 的所有事物一样,TIMTOWTDI(有不止一种方法可以做到)。由于上面的函数不会去除或清理传递给 -r 的值,因此您可以简单地在正则表达式中嵌入忽略大小写修饰符。有关序列
perldoc perlre
如何工作的更多详细信息,请参阅。(?MODIFIERS:...)
这是一个示例,我展示了混合大小写搜索找不到我正在寻找的域,但是通过使用内联标志修饰符作为搜索词的一部分,它找到了它。
您的搜索将是相似的,例如:
手册页没有显示这样的选项,但该实用
exiqgrep
程序是一个perl
脚本,您可以修改其源代码以满足您的需要: