【发布时间】:2019-09-28 04:55:56
【问题描述】:
我需要使用 Perl 按日期计算文件夹中的文件数。这是我的代码:
my $datestring = localtime(time);
print "$datestring\n";
sub demFile {
$dir = "/root/perl/*";
my @file = glob($dir);
foreach(@file) {
$a = scalar(grep $_, @file) . "\n";
return $a;
}
}
$b = demFile();
print $b;
【问题讨论】:
-
grep $_, @file的目的是什么?似乎是@file上的身份运算符。例如grep { $_ } @lst会返回相同的@lst -
@HåkonHægland
grep $_, @file不是身份运算符。例如,perl -E 'say join "-", grep $_, 1, 0, 2, "a", "", "c"'。但是,我不确定它在该问题中的用途。 -
@Dada 好点!
-
你可能在想
map $_, LIST。但即使这样也不完全等同于LIST。它创建元素的副本。这意味着$_=uc($_) for @a;和$_=uc($_) for map $_, @a;是不同的。如果您想要一个不创建副本的列表操作,则必须使用grep 1, LIST或sub :lvalue { @_ }->(LIST)。 -
非常感谢!这是我的新代码:使用 Time::localtime; $日期=本地时间();打印$日期;打印“\n”; $dir = "/root/perl/*";我的@file = glob($dir); $大小=@文件; foreach (我的 $i=0; $i