I think where your going wrong is lack of planning, whenever I start a new project script I try and identify what I actually want to achieve. Try breaking it down into much smaller blocks and work from there. Address each issue in turn and you will find it pulls itself together. A good starting place is to write whatever sub procedures you may need first and add comments, don't even attempt to start coding before you have done this. For your case I would do something like this.
sub input {
# Need to receive the input from the user
# and perform
}
sub scan {
# Going to receive a directory as a a parameter
# Look through each file or directory,and perform
# Specific action, if directory call myself with the
# path to the directory
}
sub rename_html {
# Receive filename (with path) to be changed
# Change the name of the file and return
}
sub convert_tags {
# Receive the filemname( with path) to be converted
# Open the file and using a regex will replace http with
# Https
}
sub log {
# When we change a file going to keep a record of what is to be
# done, recieve filename and a code dependent on what was done.
# Write to the log
}
Most importantly don't get yourself into a panic just do take one small step at a time.
HTH