以下程序的结果是
1 1 1 1 1 1 1 1 1
为什么呢?它应该是一些文件名,如
test.pl test1.pl
#!/usr/bin/perl -w
opendir Hdir,".";
my @filelist=readdir Hdir;
my @tmplist=grep {
$tmp = (stat($_))[7];
$tmp > 1000;
} @filelist;
my @reslist = map { s/(\S+)/ $1\n/g } @tmplist;
print "@reslist\n";
我该怎么办?
答案 0 :(得分:2)
您正在查看s///
运算符的返回值,而不是它更改的值。如果您有一个新的Perl,请向操作符添加/ r标志,以使其返回更改的值。如果您没有新的Perl,请在运算符后添加and $_
之类的内容,以使地图表达式返回更改后的值。