Perl中-s运算符含义及相关代码执行结果咨询
Perl中
-s运算符的含义及相关问题解答 嘿,我来帮你把这个Perl里的-s相关问题讲清楚~
1. my $var = -s $abc的含义
这条语句里的-s是Perl的文件测试运算符,它的作用是:
- 把
$abc的值当作文件名/文件路径来解析 - 获取该文件的大小(单位是字节),并将这个数值赋值给
$var - 如果
$abc对应的文件不存在、你没有读取权限,或者它不是普通文件(比如是目录、设备文件),那么$var会被设置为undef
2. -s运算符的核心意义
-s属于Perl内置的文件测试操作符家族,专门用于获取文件的字节数。它的语法是-s EXPR:
EXPR可以是字符串形式的文件名、存储路径的变量,甚至是一个打开的文件句柄(此时会返回该文件句柄对应文件的大小)- 和它同属一类的还有
-e(检查文件是否存在)、-f(检查是否为普通文件)、-d(检查是否为目录)等文件测试符
3. 关于代码my $a = 1 * 1024 * 1024; my $b = -s $a;中$b的值
这里要注意一个常见误区:-s不是用来处理数字值的,它只针对文件。
$a的值是1048576(也就是1MB),但-s $a会把这个数字转换成字符串"1048576",然后尝试在当前工作目录中查找名为"1048576"的文件- 如果这个文件不存在,
$b的值是undef - 如果恰好存在同名文件,
$b的值就是该文件的实际字节大小
- 如果这个文件不存在,
- 所以没法直接用
$a来表示$b的值,因为两者没有直接的数值计算关系——$a在这里只是被当作文件名来使用,而不是文件大小的参数
内容的提问来源于stack exchange,提问作者Chavan Maharshi
相关产品推荐
相关产品推荐

