http://qs321.pair.com?node_id=11108705


in reply to Parse variables from @output

You have provided your input (strangely called '@output') only as comments. We cannot tell exactly how this is broken into array elements or how those elements are broken into lines. Please post code that we can run and actually see the results that are correct and duplicate your problem. The following code should get you started. Please correct errors I may have made in understanding your data.
use strict; use warnings; use Data::Dumper; my @output = ( qq/"Hardware\n/ .qq/"cisco Nexus 3048 Chassis ("48x1GE + 4x10G Supervisor")\n/ .qq/Intel(R) Celeron(R) CPU P450 with 3981680 kB of memory.\n/ , qq/Cisco CISCO2901\/K9 (revision 1.0)/ .qq/ with 483328K\/40960K bytes of memory.\n/ , qq/cisco WS-C3550-48 (PowerPC) processor (revision N0)/ .qq/ with 65526K\/8192K bytes of memory.\n/ .qq/Model number: WS-C3550-48-SMI\n/ ); foreach (@output) { my %details; if (/^Hardware/i) { $details{'Chassis'} = $1 if (/^cisco Nexus (\S+)/i); $details{'Main Memory'} = $1 if (/^Intel (\S+)/i); } if (/^cisco ((Catalyst )?\S+) .* with (\S+) bytes of memory/i) { $details{'Chassis'} = $1; $details{'Main Memory'} = $3; } $details{'Chassis'} = $1 if (/^Model number: (\S+)/i); print Dumper(\%details); }
Bill