in reply to Does syscall wait for the command to finish?

Yes, syscall waits for the program to exit, so that it's exit code can be returned from syscall to your program.

If you would like the other program to execute and for your program to immediately continue without knowing the exit code of the other program, then you need a combination of fork and exec:

exec ($command, $arg1, ...) unless fork; # Continue here.