in reply to Shift function and file opening

It means that $file will become the argument (from either the program, or the current sub routine), and if there isn't an argument, $file becomes foo.html. One could say that foo.html is the default.

The "and file opening" is a red herring in your title. There's no relationship between the use of shift() and the use of open().

Abigail