in reply to Refactor huge subroutine

A couple of comments:

Those labels look like a good place to start. sub them out and pass the array.

Those large, gnarly if/elsif clauses would be my next step. Create a descriptively named sub like has_many_valid_lodgements, move the logic there and return true or false. This also has the advantage of self-documenting your code. No one will be able to quickly discern what

scalar(@all_lodgements) > 2 && ($total_all_lodged == $total_qcs_docs)
means.

Look for copy-and-paste code like the Date_Cmp's. Get rid of them. Make 1 sub and name it well.

Other Notes:

grep
One dead unjugged rabbit fish later...