You have single quotes in your argument to system, so
$OutFile and $List are passed without being interpolated.
Most likely, neither of them exist in the shell, which does
interpolate them, resulting in the command:
I fail to understand your point. The problem wasn't that
he used 'system', the problem was that he used single quotes
instead of double quotes. Given the mistake, the system solution works better than your suggestion - at least that
solution gave error messsages. But:
use File::Copy;
move ($OutFile, '$List/archive.html');