Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Perl中使用-s获取文件大小_Perl_Filesize - Fatal编程技术网

在Perl中使用-s获取文件大小

在Perl中使用-s获取文件大小,perl,filesize,Perl,Filesize,我正在尝试使用-s运算符查找文件的大小。看起来是这样的: my $filesz = -s $filename 我尝试了很多不同的方法,但都不能达到这个尺寸。 但是,如果我给出的是静态内容而不是文件名,则效果很好 例如: $filesz = -s "/tmp/abc.txt" 这个很好用 我尝试添加“在文件名中,它不起作用。我使用chomp从文件名中删除了\n,但问题仍然存在。这里怎么了?-s$filename工作正常;唯一的结论是,$filename中没有包含名称的文件。仔细查看$filen

我正在尝试使用
-s
运算符查找文件的大小。看起来是这样的:

my $filesz = -s $filename
我尝试了很多不同的方法,但都不能达到这个尺寸。
但是,如果我给出的是静态内容而不是文件名,则效果很好

例如:

$filesz = -s "/tmp/abc.txt"
这个很好用


我尝试添加
在文件名中,它不起作用。我使用
chomp
从文件名中删除了
\n
,但问题仍然存在。这里怎么了?

-s$filename
工作正常;唯一的结论是,
$filename
中没有包含名称的文件。仔细查看
$filename
的内容,确保您的工作目录是您认为的目录。

,最有可能的解释是
$filename
不包含您认为的目录


根据以前的经验,我会进一步猜测,
$filename
末尾是否有换行符。您是从文件还是从用户输入中读取
$filename
中的值?

我认为您应该尝试从readdir获取以下内容:

#!/usr/bin/perl -w

use strict;
use warnings;

my $filedir = "/documents/sample/file.txt";


opendir(my $dir, $filedir) or die "Could not load directory";
my @read_dir = sort grep {!-d}readdir($dir);
foreach my $fileInDir(@read_dir)
{

    my $currentDestination = "$filedir/$fileInDir";
    my $filesize = -s $currentDestination;

    if(-z $currentDestination)
    {
       print "Zero -  Filename: $fileInDir Size: $filesize\n";
    }
    else
    {
        print "Non - Zero Filename: $fileInDir Size: $filesize\n";
    }

}

-s$filename if-e$filename
你有没有打印出
$filename
的内容,看看它是否是你认为的那样?@Ether:我有。。只是它是\n不容易看到:)有两个问题1。有一个\n没有被正确地咀嚼。它在打印2时不可见。我在路径周围添加了“字符,该字符与-s不起作用。@Jack听起来你的问题实际上与
\r
有关,而不是
\n
(你的问题应该由
:crlf
I/O层解决,该层在
\r\n
\n
之间转换).无论如何,很高兴你把它解决了。是的,这是问题之一。我从readdir循环中获取文件名。