in reply to Re^2: need to remove the extra line in regular expression
in thread need to remove the extra line in regular expression

Try something like this:
my $interface; # declare the variable while (<>) { # if there are non-space symbols on the start of the line, # consider it interface name $interface = $1 if /^([\S]+)/; # $1 means first matched () group of s +ymbols # a group of numeric symbols or dots after "inet addr:" # is considered an IP-address print "$interface => $1\n" if /inet addr:([0-9.]+)/; # use /inet6? addr: ?([0-9a-f.]+)/ if you want to match IPv6-addresse +s }
Sorry if my advice was wrong.

Replies are listed 'Best First'.
Re^4: need to remove the extra line in regular expression
by laksh (Novice) on Aug 23, 2012 at 07:07 UTC
    Thanks for the help
    I have added small code which will check the condition first, if the l +ine contain Link encap and if it found then get the ethernet address +and ip address other wise skip the test. and here is my changes. open FILE,"config.txt" or die "cannot open file : $!"; my $interface; # declare the variable while(<FILE>) { if (/Link encap/){ print "yes"; # if there are non-space symbols on the start of the line, # consider it interface name $interface = $1 if /^([\S]+)/; # $1 means first matched () group of s +ymbols # a group of numeric symbols or dots after "inet addr:" # is considered an IP-address print "$interface => $1\n" if /inet addr:([0-9.]+)/; # use /inet6? addr: ?([0-9a-f.]+)/ if you want to match IPv6-addresse +s } }
    But when I run the script it gives me the below output but not giving +the expected out. "Yes"
      /inet addr:([0-9.]+)/ never matches on the line where /Link encap/ does, so the address is not matched, and print is not reached. You can use your check only on the interface name matching, not on the whole loop.
      Sorry if my advice was wrong.
        I am not getting where to check on interface name matching, can you please help me.