http://www.perlmonks.org?node_id=1001417


in reply to Regular Expressions question

Thanks for the suggestions.

I switched my join statement to use concatenation but it is giving the same output.

Switching while(<@check>) with for(@check) does not match anything as the script now returns no interfaces. Do I now need to change how I am checking for the patterns within @check?

Updated code and script output below:
use Net::Ping; use Net::Telnet::Cisco; use Getopt::Long; my $host = ""; my $interface = ""; my $PRIList = ""; my $T1List = ""; my $T1Count = 0; my $PRICount = 0; GetOptions("host:s" => \ $host); if (!$host) { print "usage: perl regexp_test.pl --host=(IPAddress)"; exit; } my $p = Net::Ping->new(); if ($p->ping($host)) { print "\nDevice is online, connecting...\n\n"; my $session = Net::Telnet::Cisco->new(Host => $host); $session->login('user', 'password'); $session->cmd("term len 0"); print "Retrieving T1 controller details...\n\n"; my @check = $session->cmd("sh run | s controller T1"); print "@check\n"; for (@check) { # match an interface number e.g. 0/0/0, 0/1/0, etc if (m^\G[0-9]/[0-9]/[0-9]^) { $interface = $_; $T1Count++; $T1List = $T1List . $interface . "\n"; } # check if the interface is a PRI (pri-group timeslots 1-24) if (m^\Gpri-group^) { $PRICount++; $PRIList = $PRIList . $interface . "\n"; } } if ($T1Count > 0) { print "T1 Controller Summary:\n\n"; print "$T1Count total T1 interfaces\n"; print $T1List; print "$PRICount total voice PRI(s)\n"; print $PRIList; } else { print "No T1 interfaces found"; } $session->close; } else { print "\nDevice OFFLINE!! Connection aborted!!\n\n"; } $p->close();
C:\perl scripts>perl regexp_test.pl --host 10.22.49.19 Device is online, connecting... Retrieving T1 controller details... controller T1 0/0/0 framing esf linecode b8zs cablelength long 0db pri-group timeslots 1-24 controller T1 0/0/1 framing esf linecode b8zs cablelength long 0db controller T1 0/1/0 framing esf linecode b8zs cablelength long 0db controller T1 0/1/1 framing esf linecode b8zs cablelength long 0db No T1 interfaces found
Thanks again for your help