#!/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
。
先谢谢了 克里斯
答案 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)
你的问题是开放的。如果你养成了使用三参数版本打开的习惯,这些问题就会消失。