Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 将以数字开头的文件复制到另一个目录_Perl - Fatal编程技术网

Perl 将以数字开头的文件复制到另一个目录

Perl 将以数字开头的文件复制到另一个目录,perl,Perl,我已经解决了1个问题,但还剩下2个问题。 有人能帮我吗 从目录local dir中,列出以数字0..9开头的所有文件以及哪个文件 分机是。宋 创建子目录“local dir/selected”,在该目录中,您将在之后复制这些文件中的每一个 对每一行中的每一非空行进行编号 在一个名为stats.txt的文件中,打印出关于每个文件的以下信息: 许多非空行。 b段数。这里的段落是由非空行和 以文件开头、文件结尾或 用空行表示。 c以行数表示的段落平均大小。 d如果是或否,文件中的所有段落长度相同。 奖

我已经解决了1个问题,但还剩下2个问题。 有人能帮我吗

从目录local dir中,列出以数字0..9开头的所有文件以及哪个文件 分机是。宋

创建子目录“local dir/selected”,在该目录中,您将在之后复制这些文件中的每一个 对每一行中的每一非空行进行编号

在一个名为stats.txt的文件中,打印出关于每个文件的以下信息: 许多非空行。 b段数。这里的段落是由非空行和 以文件开头、文件结尾或 用空行表示。 c以行数表示的段落平均大小。 d如果是或否,文件中的所有段落长度相同。 奖金问题: 检测每个文件中出现的每个押韵。 f给出押韵行与总行数的比率

对于1:

#!/usr/bin/perl
use strict;
use warnings;

my $directory = '/local_dir';

opendir (DIR, $directory) or die $!;

while (my $file = readdir(DIR))
{
  # Use a regular expression to find files ending in .song.txt
  next unless ($file =~ m/\.song.txt$/);

  print "$file\n";
}

closedir(DIR);
exit 0;

以下是您如何进行第一步和第二步:

#!/usr/bin/env perl
use strict;
use warnings;
use autodie;

my $src_dir = '';
my @files = glob $src_dir . qq([0-9]*.song.txt);

my $dest_dir = 'selected';
mkdir $dest_dir;

for my $file (@files) {
    open my $fin, "<", $file;
    open my $fout, ">", "$dest_dir/$file";
    my $c = 1;
    while (<$fin>) {
        $_ = $c++ . " $_" unless /^$/;
        print $fout $_;
    }
}
您可以使用查找感兴趣的文件,而不是使用opendir,从数字[0-9]开始,以.song.txt结束。创建输出目录后,for循环遍历这些文件,并在目标目录中创建一个同名的新文件。while循环遍历输入文件的每一行。如果每行的开头不是空的,它会在每行的开头添加一个数字,即该行的开头后面不会紧跟着行的结尾/^$/。然后将该行写入新文件


至于第三步,我认为值得您亲自尝试一下,如果您遇到问题,可以问一个新问题。

我不知道您的脚本目前如何查找以数字开头的文件。我想知道您是否尝试过我的解决方案。如果是的话,它有效吗?