Как извлечь IP-адреса и номера портов с помощью Perl и сравнить его - PullRequest
1 голос
/ 04 сентября 2011

У меня есть файл, содержащий номера портов и IP-адреса в строке.Я должен извлечь IP-адреса, рассчитать номер порта в соответствии с формулой и сравнить его с номером порта в файле и распечатать те, которые не совпадают.Если IP-адрес - WXYZ, формула для номера порта - 50000 + 200 (Y) + Z.Текстовый файл имеет следующий формат.

exchangeA_5 = 53413; 239.189.17.13 7990

exchangeA_6 = 53415; 239.189.17.15 7990

exchangeA_e = 53470; 239.189.27.70 7990

exchangeA_5 =53468; 239.189.27.68 7990

Какой лучший способ сделать это?

#!/usr/bin/perl
use strict;
use warnings;

open(my $fh, '<', 'fileC')
or die("Can't open fileC: $!\n");

while (<$fh>) {
    chomp;
    my ($key, $val) = split /=/;
    #print "$key\n";
    #print "$val\n";

    my ($port, $ip) = split /[;]/, $val;
    print "$port\n";
    print "$ip\n";

}

Ответы [ 2 ]

4 голосов
/ 04 сентября 2011

Быстро и грязно:

perl -ne '($host, $port, @ip) = split /[=;.]/; print if $port != 50000+200*$ip[2]+$ip[3]' fileC

Конечно, вы хотите переписать это в хорошую программу:)

Пол

0 голосов
/ 05 сентября 2011
open(my $fh, '<', 'fileC.txt');
while (<$fh>) {
    chomp;
    if (!/^$/){
    ($Host,$port, @IP) =  split /[=;.]/;
    print "Host:$Host, IP:", (join '.',@IP),", and Port:$port\n";   
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...