Not quite.
-z is used to check if it's a zero-length file. It returns '' if the file is greater than zero bytes, undef if the file doesn't exist, and 1 if the file is in fact empty.
-s will return the number of bytes, including zero if file is empty:
use warnings;
use strict;
use feature 'say';
say -s 'size.txt';
say -s 'empty.txt';
say -z 'size.txt';
say -z 'empty.txt';
Output:
8 # -s, 8 bytes
0 # -s, empty file
# -z, file has bytes
1 # -z, file is empty
Thanks AnomalousMonk for privately correcting me on the return values from -z. |