When I need to pass parameters, I use the CORE module Getopt::Long. The docs are pretty complete, and include type checking on input.
Re: Log file, you could either feed it in on STDIN or pass the file name as a parameter and explicitly open (open my $fh, '<', $log or die "Open fail: $!";) and read (my @Build_Log_Array = <$fh>;) it. Both work, and which I use depends on the particulars of my need.
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.