【发布时间】:2020-11-23 11:17:22
【问题描述】:
我想捕捉CWD 中的文件和@files 中的文件之间的区别:
#!/usr/bin/perl -w
use Cwd qw[getcwd abs_path];
opendir CWD, getcwd;
@files=grep{!/^\./}readdir CWD;
push @files, ("foo.txt", "bar.txt");
for my $i (@files){
@difference=grep { !/^\./ and $i!=$_ } readdir CWD;
}
print "$_\n" for @differenc
现在当前目录有以下文件:
$ls
a.txt e.txt getopt.html
用这个表达式push @files, ("foo.txt", "bar.txt");
该数组具有以下元素:("foo.txt", "bar.txt", "a.txt", "e.txt", "getopt.html"),这是正确的,但现在我只想选择那些在 CWD 中 not 的文件:
@difference=grep { !/^\./ and $i!=$_ } readdir CWD;,所以我希望数组@difference 再次只有("foo.txt", "bar.txt")(我现在这没有意义,这是一个例子)。但是print什么都没有输出,怎么回事?
【问题讨论】:
-
正如您自己编写的那样,您的示例没有多大意义,这让我想知道这是否不是XY problem。考虑解释您要达到的目标,我们也许可以提供更好的答案。
标签: arrays perl grep text-processing