in reply to Archiving Files

You seem to be confusing files and directories. At least none of the systems I've worked on support 300000 arguments to a single command:
perl -e '@files = (0 .. 300_000); system("echo @files") and die $!' Argument list too long at -e line 1.
Could it be @srcfiles actually contains directories? And maybe contains them more than once? (note: tar works recursively). In any case, half a day might be slow or it might be fast, depending on the size of the files. Also, if you've got large tarballs piping the output of tar directly into gzip or compress instead of using a temporary file might be quicker:
my @escaped = map { quotemeta } @directories; system("tar cv @escaped|gzip >tarfile.tar.gz") and die $!;
Note that you should also be careful about spaces and meta characters in @directories, hence the quotemeta.