#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my $vg_details = ' --- Physical volumes --- PV Name /dev/dsk/c14t3d1 PV Name /dev/dsk/c15t3d1 Alternate Link PV Status available Total PE 15997 Free PE 0 Autoswitch On Proactive Polling On '; while($vg_details =~ m/^\s*PV\s+Name\s*(?\S+)\s*$ \n (^\s*PV\s+Name\s+(?\S+)\s+Alternate\s+Link\s*$ \n){0,20} # skip them ^\s*PV\s+Status\s+(?\S+)\s*$ \n ^\s*Total\s+PE\s+(?\S+)\s*$ \n ^\s*Free\s+PE\s+(?\d+)\s*$ \n ^\s*Autoswitch\s+(?\S+)\s*$ \n ^\s*Proactive\s+Polling\s+(?\S+)\s*$ \n/gsmx) { my $pv_name = $+{pv_name}; print "matched $pv_name"; }