如何从perl中的命令行参数计算文件大小

如何从perl中的命令行参数计算文件大小,perl,Perl,我正在尝试一个示例程序,它可以计算命令行参数中给定的文件大小。当我将文件名存储在变量中时,它给出了正确的大小,但当从命令行参数获取文件名时,它不会输出结果 #! /usr/bin/perl use File::stat; while(<>){ if(($_ cmp "\n") == 0){ exit 0; } else{ my $file_size = stat($_)->size; # $filesize = s $_; print $file_

我正在尝试一个示例程序,它可以计算命令行参数中给定的文件大小。当我将文件名存储在变量中时,它给出了正确的大小,但当从命令行参数获取文件名时,它不会输出结果

#! /usr/bin/perl 
use File::stat;

while(<>){
 if(($_ cmp "\n") == 0){
   exit 0;
 }
 else{
   my $file_size =  stat($_)->size; # $filesize = s $_;
   print $file_size;
 }
}
1.txt是我输入的文件名

#!/usr/bin/perl 

for (@ARGV){
  my $file_size = -s $_;
  print $file_size;
}
或类似的cmd oneliner

perl -E 'say "$_, size: ", -s for @ARGV' *
很简单,对吧?首先创建一个字符串,其中包含要测试的文件的路径,然后对其使用
-s
文件测试操作符。您可以简单地使用以下命令将其缩短为一行:

print -s '/path/to/your/file.doc';

另外,请记住,如果文件大小大于零字节,则该值将始终返回true;如果文件大小为零,则该值将返回false。它提供了一种方便快捷的方法来检查零字节文件。

if($\uCMP“\n”)==0
应该是
if($\uEQ“\n”)
请阅读我的问题。它从命令行ArgumentsOrry获取@Agnus的文件名。而
perl-E'say“$”,size:,-s代表@ARGV'*
是终端用法的正确答案。@mpapec的答案是正确的。@Angus
while()
正在迭代文件内容(行),而
for(@ARGV)
正在迭代文件名
#!/usr/bin/perl -w

$filename = '/path/to/your/file.doc';
$filesize = -s $filename;
print $filesize; 
print -s '/path/to/your/file.doc';