gpt4 book ai didi

perl - 使用通配符和变量在 perl 中通配

转载 作者:行者123 更新时间:2023-12-04 04:08:34 26 4
gpt4 key购买 nike

我正在尝试做一些看起来相当简单的事情,但我终究无法弄清楚如何获得我需要的东西。

我有一个名为 $scene 的变量,我想获取属于场景变量的文件名数组,以便我可以遍历它们并“执行操作”。一些文件有 LE7 前缀,其他文件有 LT5 和 LT4。此外,还有多个文件属于一个场景,每个文件都有唯一的日期。我是 perl 的新手(今天才刚开始),我似乎无法掌握整个字符串/转义/变量处理。

这是我尝试的第一种方式:

#!/usr/bin/perl -w

use autodie;
use strict;
use warnings;
use File::Glob ':glob';

my $inpath = "indata/gz";

open(LIST, "desktop/migrate_list.txt");

while (my $scene = <LIST>){
chomp $scene;
my @gzfiles=glob("$inpath/L??$scene*.gz");

foreach my $gzfile (@gzfiles) {
# do stuff....

}
}
close LIST;

我可以详细说明我尝试过的不同事情和我得到的结果,但基本上我的方法非常粗糙,结果是一堆毫无意义的废话(最重要的是——glob 数组总是空的) .

显然,我不知道如何将通配符和变量合并到字符串/命令调用中。我已经尝试了很多事情,但我在想/希望有人知道他们头脑中的解决方案,因为我不知道。

为了清楚我在寻找什么,这里有一个例子。说 $scene = "011099"。然后该数组可能包含以下文件:

LE70110992001365-SC28491244.tar.gz,     LT40110991990001-SC9793793477.tar.gz,
LT40110992010099-SC983698346923.tar.gz, LT50110992002365-SC6938693863.tar.gz,
LE70110991992001-SC936983693.tar.gz, ...

感谢任何帮助。谢谢!

最佳答案

将评论中的调试转换为回答:

使用这个:

use Data::Dumper; 
$Data::Dumper::Useqq = 1;
chomp(my @scenes = <LIST>);
print Dumper \@scenes;

然后看看文件中是否有您认为的行。看起来你的问题是你的文件中有空间以某种方式破坏了 glob。

关于perl - 使用通配符和变量在 perl 中通配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23553292/

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