Once you've got the basics down, and your CGI spits out a simple page, you're ready to move on. Break the assignment up into sub-tasks, and start with the first, most basic task. Add a simple form, then move on to bigger and better things. This way, if something breaks, you don't have to do too much back-tracking to figure out what went wrong. This makes it much easier for me to look at your code and see where you were and where you are going.
Errors are an important part of the process.
If you are using a debugger or compiler with your programs, you will often get several errors if the code is broken. The first error will cause the program to get confused, and then following lines of code will be misunderstood, and you see a long list of errors. Carriage returns are a problem If you have a carriage return in a line of Pearl, it will break. Leave long lines to run over the end of the page. This is bad, and causes Pearl to break.