When using the LIST form of
system() the first argument is the program to run, the rest of the arguments are the parameters for the program. I can almost guarantee you don't have a program called
/usr/bin/mailx uuencode $zipfile $zipfile -r -s on your system. You probably have
/usr/bin/mailx however. The other parts (
uuencode $zipfile $zipfile -r -s) need to be passed as parameters to
mailx.
my @emailcmd = ('/usr/bin/mailx', 'uuencode', $zipfile, $zipfile, '-r'
+, '-s');
#and later
my @args = (@emailcmd, $subject, $recipient);
system(@args) == 0
or die "system @args failed: $?";
This is of course assuming that the command /usr/bin/mailx uuencode file.zip file.zip -r -s Subject Recipient indeed works on the command line.