我正在嘗試使用-s
運算符來查找文件的大小。它看起來像這樣:使用Perl中的-s獲取文件大小
my $filesz = -s $filename
我嘗試了各種各樣的方式,但它不能得到這個大小。
但是,如果我給靜態的內容,而不是文件名,它工作正常
例如:
$filesz = -s "/tmp/abc.txt"
這工作得很好。
我試着在文件名中加入"
,它沒有工作。我使用chomp
從文件名中刪除了\n
,但問題依然存在。這裏有什麼問題?
我正在嘗試使用-s
運算符來查找文件的大小。它看起來像這樣:使用Perl中的-s獲取文件大小
my $filesz = -s $filename
我嘗試了各種各樣的方式,但它不能得到這個大小。
但是,如果我給靜態的內容,而不是文件名,它工作正常
例如:
$filesz = -s "/tmp/abc.txt"
這工作得很好。
我試着在文件名中加入"
,它沒有工作。我使用chomp
從文件名中刪除了\n
,但問題依然存在。這裏有什麼問題?
As hobbs says,最可能的解釋是$filename
不包含您認爲它所做的事。
根據以前的經驗,我會走得更遠,並猶豫一下$filename
在結尾處有一個換行符。您是否從文件或用戶輸入中讀取$filename
中的值?
是的,這是問題之一。從readdir循環獲取文件名。 – Jack 2010-08-25 07:42:14
我想你應該試試這個您從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 $文件名,如果-e $ filename' – 2010-08-24 19:16:55
你有沒有打印出來的'$ filename'的內容,看它是否你認爲它是什麼? – Ether 2010-08-24 19:27:49
@Ether:我確實......它只是它\ n這是不容易看見:) – Jack 2010-08-25 07:40:41