我正在編寫Perl腳本,但我沒有得到它的一部分。對文本文件中的字符串不區分大小寫的grep
有一個帶有主機名的文本文件,每行一個。
我需要搜索第二個文件的主機名(黑名單),以查看從第一個主機名讀取的主機名。要成爲聖人,搜索應該不區分大小寫。
我的第一種方法是使用Perl grep
,但我閱讀了它,它似乎不太適用於我所需要的。所以我想過使用shell grep
。
據我所知,它可以執行system
,qx
,反引號和open
。
我決定使用system
,這樣我就可以得到grep
的退出狀態代碼,並在if
語句中使用它來完成腳本的其餘工作。我的代碼看起來像這樣(與grep
測試腳本):
use strict;
use warnings;
my $blacklist_server = "de9899svc";
my $server = undef;
my $exit_value = undef;
open(SERVERLISTE,"/home/ansible/serverscan/scan_results/serverliste_22.02.17.txt") or die "$!";
OUTER: while (<SERVERLISTE>) {
$server = $_;
system("grep -i '\$server' /home/ansible/serverscan/black.list");
$exit_value = $? >> 8;
print "$exit_value\n";
}
close SERVERLISTE;
的問題是,$exit_value
始終爲1,無論主機名是否匹配。所以有人可以告訴我我錯過了什麼:)
'if(grep {/ $ server/i}''請試試這樣。 –
ssr1012