Because someone might decide to copy the script to a machine where there is no command called "ls" (or where such a command is not in the user's PATH). Also, it might seem unlikely in this case, but one person's "ls" command might produce different output (or perform some different function) than another person's "ls" command.
A perl-internal method like a glob or opendir()/readdir() can be counted on to produce consistent results wherever perl is installed.