从压缩文件中获取原始文件名

Jan*_*i86 1 regex perl

我有如下压缩文件名:

filename1.csv.Z
filename2.csv.gz
Run Code Online (Sandbox Code Playgroud)

我有用于最后扩展名的正则表达式:

my ($ext) = $file =~ /(\.[^.]+)$/;
Run Code Online (Sandbox Code Playgroud)

现在,我想获取“原始文件名”,例如不带.Z或.gz的文件。filename1.csv,filename2.csv

我试图在下面使用类似expresion的方法,但是不起作用...

my ($output) = $file =~ /.+?(?=(([^.]+)$))/;
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

dax*_*xim 6

了解您的标准库。参见File :: Basename

use File::Basename qw(basename);
for my $fullname (qw(filename1.csv.Z filename2.csv.gz)) {
    my $basename = basename $fullname, qw(.Z .gz);
}
__END__
filename1.csv
filename2.csv
Run Code Online (Sandbox Code Playgroud)