我有一个目录,其中包含格式的图像头文件列表
image1.hd
image2.hd
image3.hd
image4.hd
我想在目录中搜索正则表达式Image type:=4
并找到第一次出现此模式的文件号。我可以在 bash 中使用几个管道轻松地做到这一点:
grep -l 'Image type:=4' image*.hd | sed ' s/.*image\(.*\).hd/\1/' | head -n1
在这种情况下返回 1。
此模式匹配将在 perl 脚本中使用。我知道我可以使用
my $number = `grep -l 'Image type:=4' image*.hd | sed ' s/.*image\(.*\).hd/\1/' | head -n1`
但在这种情况下最好使用纯 perl 吗?这是我能想到的最好的使用 perl 的方法。非常麻烦:
my $tmp;
#want to find the planar study in current study
foreach (glob "$DIR/image*.hd"){
$tmp = $_;
open FILE, "<", "$_" or die $!;
while (<FILE>)
{
if (/Image type:=4/){
$tmp =~ s/.*image(\d+).hd/$1/;
}
}
close FILE;
last;
}
print "$tmp\n";
这也返回所需的输出 1。有没有更有效的方法来做到这一点?