Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^2: Split() first 3 elements of @array

by hmb104 (Sexton)
on Aug 28, 2012 at 19:10 UTC ( #990311=note: print w/ replies, xml ) Need Help??


in reply to Re: Split() first 3 elements of @array
in thread Split() first 3 elements of @array

Thanks for the suggestions. I have tried 2 ways and I still can't get some of the info. Lets assume the lines that I store at my @array are the following:

Device ID: switch1.Core-3750.abc.com Entry address(es): IP address: 10.10.10.10 Platform: cisco WS-C3750G-12S, Capabilities: Router Switch IGMP Interface: GigabitEthernet1/0/28, Port ID (outgoing port): GigabitEth +ernet2/0/7 Holdtime : 145 sec Version : Cisco IOS Software, C3750 Software (C3750-IPSERVICESK9-M), Version 12. +2(55)SE4, RELEASE SOFTWARE (fc1) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2011 by Cisco Systems, Inc. Compiled Tue 06-Sep-11 02:59 by prod_rel_team advertisement version: 2 Protocol Hello: OUI=0x00000C, Protocol ID=0x0112; payload len=27, val +ue=00000000FFFFFFFF01022507000000000000A8B1D400F080FF0000 VTP Management Domain: 'networks' Native VLAN: 1 Duplex: full

I can extract the switch name but I cannot sxtract the IP address for the switch for some reason

foreach $Line ( @RouterOutput ) { if ( $Line =~ m/^Device / ) { @Data = split( ' ', $Line ); $SwitchName = $Data[ 2 ] ; last ; } if ( $Line =~ m/^IP / ) { @Data = split( ' ', $Line ); $SwitchIP = $Data[ 2 ] ; last ; } }


Comment on Re^2: Split() first 3 elements of @array
Select or Download Code
Replies are listed 'Best First'.
Re^3: Split() first 3 elements of @array
by ig (Vicar) on Aug 28, 2012 at 20:40 UTC
    I cannot sxtract the IP address for the switch for some reason

    The third line, with the IP address is indented: there is some whitespace at the beginning of the line, but your regular expression is looking for 'IP' at the beginning of the line: /^IP/. Change that to accept some leading whitespace and you should get a match: /^\s*IP/

      use Modern::Perl; use Modern::Perl; say ' IP address: 10.10.10.10' =~ /IP\s+address:\s+([^\s]+)/; say 'IP address: 10.10.10.10' =~ /IP\s+address:\s+([^\s]+)/; say ' IP address: 10.10.10.10' =~ /^\s*IP\s+address:\s+([^\s]+)/; say 'IP address: 10.10.10.10' =~ /^\s*IP\s+address:\s+([^\s]+)/;

      Output:

      10.10.10.10 10.10.10.10 10.10.10.10 10.10.10.10

      Update: Ah! hmb104 was referring to using split, not the regex (which isn't attempting to match at the beginning of a line and is fully anchored w/o mentioning the spaces before "IP address:").

Re^3: Split() first 3 elements of @array
by Kenosis (Priest) on Aug 28, 2012 at 19:42 UTC

    Try the following:

    use Modern::Perl; my @RouterOutput = <DATA>; my $RouterOutput = join ' ', @RouterOutput; my ( $SwitchName, $SwitchIP ) = $RouterOutput =~ /Device\s+ID:\s+([^\s]+).+IP\s+address:\s+([^\s]+)/ +s; say "$SwitchName\n$SwitchIP"; __DATA__ Device ID: switch1.Core-3750.abc.com Entry address(es): IP address: 10.10.10.10 Platform: cisco WS-C3750G-12S, Capabilities: Router Switch IGMP Interface: GigabitEthernet1/0/28, Port ID (outgoing port): GigabitEth +ernet2/0/7 Holdtime : 145 sec Version : Cisco IOS Software, C3750 Software (C3750-IPSERVICESK9-M), Version 12. +2(55)SE4, RELEASE SOFTWARE (fc1) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2011 by Cisco Systems, Inc. Compiled Tue 06-Sep-11 02:59 by prod_rel_team advertisement version: 2 Protocol Hello: OUI=0x00000C, Protocol ID=0x0112; payload len=27, val +ue=00000000FFFFFFFF01022507000000000000A8B1D400F080FF0000 VTP Management Domain: 'networks' Native VLAN: 1 Duplex: full

    Output:

    switch1.Core-3750.abc.com 10.10.10.10

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://990311]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (19)
As of 2015-07-28 18:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (258 votes), past polls