我在连接中有"未初始化的值"本论坛中详细讨论过的错误,通常是指未定义的变量。
然而,作为一个新手,我在"为什么"问题存在于下面的代码中。
错误是指变量$ sb和$ filesize。
非常感谢任何见解。
谢谢!!!
#!/usr/bin/perl
use strict;
use warnings;
use File::stat;
#The directory where you store the filings
my $dir="/Volumes/EDGAR1/Edgar/Edgar2/10K/2009";
opendir(DIR, $dir) or die $!;
while (my $file = readdir(DIR)) {
# Use a regular expression to ignore files beginning with a period
next if ($file =~ m/^\./);
#my $form_type=substr($line,62,12);
#my $cik=substr($line,74,10);
#my $file_date=substr($line,86,10);
#Note that for file date, we need to get rid of
#the - with the following regular expression.
#month-day-year and some years there is not.
#This regular expression
#my $file_date=~s/\-//g;
my $filesize = -s "$file";
my $sb = (stat($file))[7];
print "$file,$sb,$filesize\n";
}
closedir(DIR);
exit 0;
答案 0 :(得分:5)
您正在使用File::stat
模块。该模块实现了stat
功能,该功能覆盖了Perl的内置功能。它返回一个对象而不是一个列表。所以这个:
my $sb = (stat($file))[7];
导致$sb
未定义,因为列表中只有一个对象。你要做的是改用模块函数:
my $sb = stat($file)->size();