use constant HOST_LINE => qr{ \s+ \w+: \s [\/\w+] \s+ # host, partition level=\w+, \s+ # backup level (\d+) \s+ (\w+) \s+ # amt backed up \d+:\d+:\d+ \s+ # Time (\d+) \s+ files # num. files }xms ; my @lines = ; for my $line (@lines) { if ( $line =~ HOST_LINE ) { my ($files, $units, $amt_backed_up) = ($3, $2, $1); print "line - $line, units - $units, amt - $amt_backed_up, files $files\n"; } else { print "here -> $line" } }