对Perl来说很新,
我的要求是读取一个目录并搜索或匹配特定文件并处理读取该文件
我知道这对你们很容易,但是我不能这样做,所以请提供一些指导来完成这个
我已按以下代码列出。
{
#!/usr/bin/perl
use strict;
use warnings;
use File::stat;
use File::Copy;
use Sys::Hostname;
$source_raw_directory = "/dfactory/data/raw/in/";
opendir (DIR,$source_raw_directory)
#foreach @array (grep(/hiea_._DeletedPatient\.txt$/,readdir(DIR)));
@array = grep (/\hiea_._DeletedPatient\.txt$/,readdir(DIR))
#print "@array";
closedir(DIR);
} 我收到如下错误
“数组找到了运营商在Deleted_Patient.pl第45行的预期位置 (以前缺少操作员?) Deleted_Patient.pl第45行的语法错误,靠近“)
#foreach @array (grep(/hiea_._DeletedPatient\.txt$/,readdir(DIR)));
@array "
Deleted_Patient.pl有编译错误“
由于 PANDIA
答案 0 :(得分:1)
我不会。我发现opendir
和grep
是一个笨拙的习惯用法,而你可以glob
代替。
foreach my $filename ( glob ( "$source_raw_directory/*iea_._DeletedPatient.txt" ) ) {
print $filename,"\n";
}
注意 - glob会扩展路径,因此您将拥有完整的路径名。我通常认为这是一个优势,因为这意味着您永远不会忘记在open
次调用中包含路径名。
答案 1 :(得分:0)
你说你的错误包括" (之前缺少操作员?)"。这并不是特别清楚,但似乎暗示错误出现在错误中引用的代码之前。 @array
之前的行是注释,因此不太可能出现问题,所以让我们先看看这行。
opendir (DIR,$source_raw_directory)
我认为问题是明确的。在该行的末尾没有评论。
我使用Perl 5.22.2测试了您的代码,它提供了更清晰的错误消息:
找到运算符在测试线13附近的位置,接近")
#foreach @array (grep(/hiea_._DeletedPatient\.txt$/,readdir(DIR))); @array"
(前一行缺少分号?)
答案 2 :(得分:-1)
首先,使用谷歌和官方POD文档,例如 http://perldoc.perl.org/functions/readdir.html
你的代码使用了这个:
var conf = new Dictionary<string, dynamic>();
conf["url"] = "http://example.com";
conf["timeout"] = 30;
// in some other place
string url = conf["url"];
int timeout = conf["timeout"];