[TriLUG] YAPQ (yet another perl question)..

Steve Litt slitt at troubleshooters.com
Thu Jun 11 14:53:07 EDT 2009


On Thursday 11 June 2009 02:20:52 pm Greg Brown wrote:
> Ok, I've got a really simple script that is confounding me.  I have a
> source list of a bunch of routers, all the same make and model.  I ssh into
> the routers and, at this point, just running a simple command: show flash. 
> The command 'show flash' returns output much like this:
>
> routername#show flash
>
> Directory of flash:/
>
>     2  -rwx        2072   Jun 2 2009 17:29:17 +00:00  multiple-fs
>     3  -rwx     7713393   Mar 1 1993 01:11:46 +00:00
> c3560-advipservicesk9-mz.122-25.SED.bin
>     4  -rwx         616   Mar 1 1993 00:00:55 +00:00  vlan.dat
>     5  drwx         192   Mar 1 1993 00:08:10 +00:00
> c3560-ipservices-mz.122-25.SEB2
>   358  -rwx        3916   Jun 2 2009 17:29:17 +00:00  private-config.text
>   359  -rwx        8248   Jun 2 2009 17:29:17 +00:00  config.text
>
> 15998976 bytes total (358912 bytes free)
>
> Nothing terrible exciting.  I'm capturing this using Perl::Expect and I'm
> doing so using this small block of code:
>
>         # now we should be at the "#" prompt
>         $ssh->expect(30,'#');
>
>         # now see how many free bytes we have
>         print $ssh "show flash\r";
>
>         my( $which, $why, $match, $before, $after ) = $ssh->expect(30,'#');
>
> The variable "$before" captures the output of 'show flash'
>
> The only line I'm interested in at this point is the last line that shows
> the total size of flash and the bytes free.  

I can't understand everything you say, but the way to get just the last 
element of a Perl array is:

my $lastline = $myarray[$#myarray];

because $#myarray gives you the highest used subscript, which of course is 1 
less than the array's length.

HTH

SteveT

Steve Litt
Recession Relief Package
http://www.recession-relief.US
Twitter: http://www.twitter.com/stevelitt




More information about the TriLUG mailing list