【发布时间】:2013-01-20 15:14:54
【问题描述】:
我编写的程序会逐行遍历目录和子目录中的所有文件,并执行一些包含 $counter 的命令。 我想制作一个 .txt 文件,每行如下所示:
<file name> <$counter in the beginning of the file>
例如,如果我在文件 a 中有三个文件 a.txt 、 b.txt 和 c.txt ,则计数器在文件 b 中计数为 10,它计数为 20,在文件 c 中计数为 30,文件将如下所示:
a.txt 0
b.txt 10
c.txt 20
我的程序如下所示:
use strict;
use warnings;
use File::Find;
my $dir = "C:/New Folder";
open (MYFILE, '>>data.txt');
# fill up our argument list with file names:
find(sub { if (-f && /\.[c]$/) { push @ARGV, $File::Find::name } }, $dir);
$^I = ".bak"; # supply backup string to enable in-place edit
foreach $argvv(@ARGV)
{
while (<>)
{
if ($prev_arg ne $argvv)
{
print MYFILE "$argvv $counter\n";
$prev_arg = $argvv;
}
#some unrelated line by line code here
close (MYFILE);
}
}
我试图做的是让程序在每次完成一个文件并启动另一个文件时打印文件名和计数器。
我得到的 data.txt 文件是第一个文件的名称和为目录中每个文件的每一行打印的计数器。 不用说,我完全是 Perl 的菜鸟,所以我非常感谢一些帮助。
谢谢:)
【问题讨论】:
-
你为什么将找到的文件推送到@ARGV,而不是你声明的数组?