gpt4 book ai didi

regex - 使用 Perl 和 Regex 将文件名排序到数组中

转载 作者:行者123 更新时间:2023-12-01 07:46:24 26 4
gpt4 key购买 nike

sub open_directory {
my $directory = shift @_;
my @files = ();

opendir (my $dh, $directory) or die "Couldn't open dir '$directory' : $!";
my @all_files = readdir $dh;
closedir $dh;

foreach my $files(@all_files){
while($files =~ /\.htm/){
push(@files);
}
}
return @files;
}

错误在代码push(@files);错误是:没有值的无用推送

我想使用正则表达式处理 @files 数组中名称以 .htm.html 结尾的文件 /\.htm/ 请帮助我。

最佳答案

解决这个问题最简单的方法是使用 grep 内置函数:它从列表中选择条件为真的元素,然后返回所有匹配元素的列表,例如

my @even = grep { $_ % 2 == 0 } 1 .. 10; # even number in the interval [1, 10].

在我们的例子中,我们可以做到

my @files = grep { /\.htm/ } readdir $dh;

如果你想使用 push,那么你 (a) 必须指定你想要推送到数组的内容,并且 (b) 应该只在 if 正则表达式匹配,而不是 while 它匹配:

for my $file (@all_files) {
push @files, $file if $file =~ /\.htm/;
}

关于regex - 使用 Perl 和 Regex 将文件名排序到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16354477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com