无法将所有内容都放入数组中

时间:2014-11-11 16:39:17

标签: perl csv

#!/usr/bin/perl

use strict;
use warnings;

my $directory="/var/www/out-original";
my $filterstring=".csv";
my @files;
# Open the folder
opendir my $dir, $directory or die "couldn't open $directory: $!\n";

foreach my $filename (sort(readdir($dir))) {
    if ($filename =~ m/$filterstring/) {
        # print $filename;
        # print "\n";
        push (@files, $filename);
    }
}
closedir $dir;

foreach my $file (@files) {
    open $file or die $!;
    my @array;

    while ($file) {
        #print $_;
        # Push each line of the file into array
        push (@array, $file);
    }
}

大家好, 感谢帮助我快速解决为什么readdir列出错误顺序的文件名(Why does readdir() list the filenames in wrong order?)。 现在我又来了一个。使用此代码段,无法将文件的所有内容都放入数组中吗?

错误讯息: Can't use string ("Report_01_2014.csv") as a symbol ref while "strict refs" in use at parse.pl line 22

先谢谢了 克里斯

2 个答案:

答案 0 :(得分:2)

我想你想做

while( my $line = <$file> ){ # get next line, note the '<>'
   push ( @array, $line );
}

另外,您确定open $file or die $!能做什么吗?

我认为这应该是错误信息告诉你的内容。

你在(文件名)中推了一个字符串。

所以我认为你想要

open my $fh, $file or die $!;

while ( my $line = <$fh> ){...}

close $fh;

答案 1 :(得分:0)

你的问题是开放的。如果你养成了使用三参数版本打开的习惯,这些问题就会消失。