never believe people who say sys* functions are always faster because they are more direct. syswrite is not faster than print, because print benefits from Perl's internal optimization. (syswrite vs print: print wins (buffered: 580%, unbuffered: 250%))
do not turn off buffering (do not turn on autoflush). A lot of people seem to have a habit of writing $|++; in every single script. Most scripts do not need it. Use $| wisely. (print '' unbuffered vs buffered: buffered wins (90%))
write large chunks if you are on a slow medium. If, for some reason, you have to write to a file on an operating system that does no buffering, buffer yourself, and write large chunks. For normal scripts, this is not much of a problem and writing directly is probably more efficient than building a chunk.
do not try to interpolate function calls as described in How do I expand function calls in a string? (perlfaq4), but if you do, use ${\ ... } instead of @{[ ... ]} - if you need list context, join it yourself (and remember that a constant literal is faster than $").