连接中未初始化的值

时间:2014-11-23 02:33:24

标签: perl

我在连接中有"未初始化的值"本论坛中详细讨论过的错误,通常是指未定义的变量。

然而,作为一个新手,我在"为什么"问题存在于下面的代码中。

错误是指变量$ 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;  

1 个答案:

答案 0 :(得分:5)

您正在使用File::stat模块。该模块实现了stat功能,该功能覆盖了Perl的内置功能。它返回一个对象而不是一个列表。所以这个:

my $sb = (stat($file))[7];

导致$sb未定义,因为列表中只有一个对象。你要做的是改用模块函数:

my $sb = stat($file)->size();