Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re^2: Parse variables from @output

by Corion (Pope)
on Nov 15, 2019 at 08:54 UTC ( #11108721=note: print w/replies, xml ) Need Help??

in reply to Re: Parse variables from @output
in thread Parse variables from @output

You have:

.qq/ cisco Nexus 3048 Chassis ("48x1GE + 4x10G Supervisor)\n/

but your match wants cisco to appear at the start of a line:

$details{'Chassis'} = $1 if (/^cisco Nexus (\S+)/i);

You will need to allow for some whitespace in front of cisco, for example by allowing for \s*:

$details{'Chassis'} = $1 if (/^\s*cisco Nexus (\S+)/i);

But "start of the line" (^) means "start of the whole string" to Perl unless you also tell it to match after a newline using the /m modifier:

$details{'Chassis'} = $1 if (/^\s*cisco Nexus (\S+)/mi);

Adding that, I get:

$VAR1 = { 'Chassis' => '3048' }; $VAR1 = { 'Main Memory' => '483328K/40960K', 'Chassis' => 'CISCO2901/K9' }; $VAR1 = { 'Chassis' => 'WS-C3550-48', 'Main Memory' => '65526K/8192K' };

Replies are listed 'Best First'.
Re^3: Parse variables from @output
by Cisco_Dave (Novice) on Nov 15, 2019 at 09:22 UTC

    That's spot on thanks. Chassis variable working. Any idea on the memory part?

    $details{'Main Memory'} = $1 if (/^\s* Intel .* with (\S+) kB of memor +y/mi);

      Maybe now is a good moment to look at your regular expression and compare it with the input string.

      For example, there is a space after "Intel" in your regular expression, but no such space in your input string.

      Yeah that was the only issue. Learning curve this is. Top man cheers

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2021-10-27 03:04 GMT
Find Nodes?
    Voting Booth?
    My first memorable Perl project was:

    Results (91 votes). Check out past polls.