my %status; my $file = '/var/status.dat'; { local $/ = "hoststatus\n{"; if ( open my $fh, '<', $file ) { while ( my $block = <$fh> ) { my ($hostname,$status) = $block =~ m! host_name: (.*?) \n.*? scheduled_downtime_depth=(\d+) !xms; $status{$hostname} = $status; } } } for my $host ( keys %status ) { print $host,"\n" if $status{$host} == 1; }