Perl 如何扩展适用于一个文件的程序以作用于目录中的每个文件

Perl 如何扩展适用于一个文件的程序以作用于目录中的每个文件,perl,Perl,我编写了一个程序来检查文本文件中的拼写错误或未使用的数据。现在,我想使用相同的过程检查目录中的所有文件 以下是我为第一个文件运行的几行脚本: open MYFILE, 'checking1.txt' or die $!; @arr_file = <MYFILE>; close (MYFILE); open FILE_1, '>text1' or die $!; open FILE_2, '>Output' or die $!; open FILE_3, '>Out

我编写了一个程序来检查文本文件中的拼写错误或未使用的数据。现在,我想使用相同的过程检查目录中的所有文件

以下是我为第一个文件运行的几行脚本:

open MYFILE, 'checking1.txt' or die $!;
@arr_file = <MYFILE>;
close (MYFILE);

open FILE_1, '>text1' or die $!;
open FILE_2, '>Output' or die $!;
open FILE_3, '>Output2' or die $!;
open FILE_4, '>text2' or die $!;

for ($i = 0; $i <= $#arr_file; $i++) {

    if ( $arr_file[$i-1] =~  /\s+\S+\_name\s+ (\S+)\;/ ) {
           print FILE_1 "name : $i  $1\n";
    }

...
打开我的文件,'checking1.txt'或die$!;
@arr_文件=;
关闭(MYFILE);
打开文件1,“>text1”或死亡$!;
打开文件2,“>Output”或die$!;
打开文件_3,“>Output2”或die$!;
打开文件4,“>text2”或死亡$!;

对于($i=0;$i),使用数组存储文件名,然后在其上循环。循环结束时,重命名输出文件或将其复制到某个位置,以便在下一次迭代中不会被覆盖

my @files = qw(checking1.txt checking2.txt checking3.txt checking4.txt checking5.txt);
foreach my $filename (@files){
    open (my $fh, "<", $filename) or die $!;
    #perform operations on $filename using filehandle $fh
    #rename output files    
}
应写为

@lines = <MYFILE>;
@lines=;

使用数组存储文件名,然后在其上循环。循环结束时,重命名输出文件或将其复制到某个位置,以便在下一次迭代中不会被覆盖

my @files = qw(checking1.txt checking2.txt checking3.txt checking4.txt checking5.txt);
foreach my $filename (@files){
    open (my $fh, "<", $filename) or die $!;
    #perform operations on $filename using filehandle $fh
    #rename output files    
}
应写为

@lines = <MYFILE>;
@lines=;

同一目录中的所有文件意味着将程序放入目录中,然后运行它

要从目录中读取文件,请使用

while(my$filename=)#根据需要更改文件扩展名
{

打开我的$fh,“你的所有文件都在同一个目录中,这意味着把程序放在目录中,然后运行它

要从目录中读取文件,请使用

while(my$filename=)#根据需要更改文件扩展名
{
打开我的$fh,”
  • 为什么不使用
  • ?使更改目录中的文件非常容易。只需提供开始目录即可。 这并不总是最好的选择,这取决于你的需要,但它是有用的,很容易几乎每次我需要修改很多文件一次

  • 另一种选择是循环遍历文件,但在这种情况下,您必须提供文件名

  • 正如所指出的,
    glob
    可能会有所帮助

  • 为什么不使用
  • ?使更改目录中的文件非常容易。只需提供开始目录即可。 这并不总是最好的选择,这取决于你的需要,但它是有用的,很容易几乎每次我需要修改很多文件一次

  • 另一种选择是循环遍历文件,但在这种情况下,您必须提供文件名

  • 正如所指出的,
    glob
    可能会有所帮助


  • 这并不难。你尝试了什么,哪里出了问题?这是家庭作业吗?文件::查找-YyOnON100:可能是因为不需要递归。“鲍罗丁在编辑我的答案的中间,包括这不是很难。你尝试了什么,出了什么问题?这是作业吗?文件:查找-YyOnON100:可能是因为没有递归要求。鲍罗丁正在编辑我的答案,其中包括我所有的文件都在同一个目录中,我得到了很多文件,实际上是5多个文件,所以我仍然可以使用上面的所有文件,我所有的文件都在同一个目录中,我得到了很多文件实际上超过5个文件,所以我仍然可以使用以上?