のように最初にそれを検証することができます。
my @IPS = ("10.20.30","12.13.14","30.40.50");
そして私はとすることを記述します:私はあなたがおそらく望んでいたと思います
my @IPS = qw(10.20.30 12.13.14 30.40.50);
私は私が使用することができます知っている「|」または状態が、私は数を知らないことを前提としてい配列内の要素
私は全く問題はないと思います。
# Need quotemeta() to escape the dots
my $IP_str = join '|', map { quotemeta $_ } @IPS;
my $IP_re = qr/$IP_str/;
# Keep as much of the processing as possible in Perl-space
my @found = grep { /$IP_str/ } `netstat -Aa`;
say scalar @found;
正規表現の代わりに、@IPSをハッシュにすることができます。
my %IP = map { $_ => 1 } @IPS;
my @found = grep { $IP{$_} } `netstat -Aa`;
say scalar @found;
更新:実は、その最後の例は動作しません。ハッシュと照合する前に、netstat
出力からIPアドレスを抽出する必要があります。誰かにそれを広げてもらうためにそこに残しておきました。
詳細な答えをいただきありがとうございます。私は正規表現の代替を試み、配列には何も含まれていません。この場合、どのようにIPSをIPSアレイに挿入するかは重要ですか?なぜなら私はコマンドを使ってそれを行うからです:my @IPS = '$ cmd | tr "" "\ n" '; chomp @IPS – user3586606
私の更新を見てください。その代替バージョンは動作しません。配列がどのように設定されているかは関係ありませんが、要素に** IPアドレスだけが**含まれていることを確認する必要があります。たとえば、改行文字も含めておくのは簡単です。それはうまくいきません。 –
あなたは非常に多くのものを外部プログラムに渡すのを止める必要があります。 Perlは完全に使える 'tr /.../.../ '演算子を持っています:-) –