#! perl use strict; use warnings; my $string = join("\n", ); # slurp it all into a string with newlines my ($configuration, $memory, $serial_number) = $string =~ /System Configuration:\s+([\w\s]*?)\n.*Memory size:\s+(\d+).*Chassis Serial Number\W+(\w+)/s; print "System Configuration: '$configuration'\n", "Memory Size: '$memory'\n", "Serial Number: '$serial_number'\n\n"; __DATA__ ============================ FW Version 1 ============================ System Configuration: Oracle Corporation sun4v SPARC Enterprise T5220 Memory size: 65408 Megabytes Version ------------------------------------------------------------ Sun System Firmware 7.4.7 2014/01/14 18:48 ====================== System PROM revisions ======================= Version ------------------------------------------------------------ OBP 4.33.6.e 2014/01/14 15:19 Chassis Serial Number --------------------- FDL10792DE ============================ FW Version 2 ============================ System Configuration: Oracle Corporation sun4v SPARC Enterprise T5221 Memory size: 65409 Megabytes Version ------------------------------------------------------------ Sun System Firmware 7.4.7 2014/01/14 18:48 ====================== System PROM revisions ======================= Version ------------------------------------------------------------ OBP 4.33.6.e 2014/01/14 15:19 Chassis Serial Number --------------------- abcdefg #### 17:45 >perl 1379_SoPW.pl System Configuration: 'Oracle Corporation sun4v SPARC Enterprise T5220' Memory Size: '65409' Serial Number: 'abcdefg' 17:45 > #### my $string = do { local $/; ; };