#!/usr/bin/perl use strict; use Data::Dumper; eval q{use warnings;} or local $^W=1; my @SSS = (); OUTER: while (my $line = ) { chomp $line; if( @SSS ){ if( $line =~ /Daily Windows:/i ) { while($line = ) { if ($line =~ /schedule:\s+(\S+)/i){ push @SSS, { 'Schedule' => $1 }; next OUTER; }elsif($line =~/\w+\s+\d\d\:\d\d\:/){ my( $fDay, $fTime, $tDay, $tTime ) = grep/$_/,split /\s+|-->/,$line; push @{$SSS[-1]->{ 'Windows' }}, [ $fDay, $fTime, $tDay, $tTime ]; } } }else{ my($a,$b) = split /\:/, $line, 2; $SSS[-1]->{ $a } = $b; } }elsif($line =~ /schedule:\s+(\S+)/i) { push @SSS, { 'Schedule' => $1 }; } } print Dumper \@SSS; __DATA__ Schedule: Full Type: Full Backup Frequency: every 1 day Retention Level: 2 (5 weeks) Maximum MPX: 1 Residence: (specific storage unit not required) Volume Pool: (same as class volume pool) Daily Windows: Saturday 02:00:00 --> Saturday 12:00:00 Schedule: CINC Type: Cumulative Incremental Backup Frequency: every 1 day Retention Level: 2 (5 weeks) Maximum MPX: 1 Residence: (specific storage unit not required) Volume Pool: (same as class volume pool) Daily Windows: Sunday 02:00:00 --> Sunday 12:00:00 Monday 02:00:00 --> Monday 12:00:00 Tuesday 02:00:00 --> Tuesday 12:00:00 Wednesday 02:00:00 --> Wednesday 12:00:00 Thursday 02:00:00 --> Thursday 12:00:00 Friday 02:00:00 --> Friday 12:00:00