use strict; use warnings; local $/ = 'lease'; while () { my ($ip) = /\s+(\S+)\s+/ or next; my $client = /client-hostname\s+(".+")/ ? $1 : ''; print "$ip,$client\n"; } __DATA__ lease 192.168.20.4 { starts 6 2009/06/27 00:40:00; ends 6 2009/06/27 12:40:00; hardware ethernet 00:00:00:00:00:00; uid 00:00:00:00:00:00; client-hostname "examle-workstation1"; } lease 192.168.20.5 { starts 6 2009/06/27 00:40:00; ends 6 2009/06/27 12:40:00; hardware ethernet 00:00:00:00:00:00; } lease 192.168.20.6 { starts 6 2009/06/27 00:40:00; ends 6 2009/06/27 12:40:00; hardware ethernet 00:00:00:00:00:01; uid 00:00:00:00:00:01; client-hostname "examle-workstation2"; } lease 192.168.20.7 { starts 6 2009/06/27 00:40:00; ends 6 2009/06/27 12:40:00; hardware ethernet 01:00:00:00:00:00; }