在Perl中是否有正则表达式来查找文件的扩展名?

Zer*_*obu 21 perl

在Perl中是否有正则表达式来查找文件的扩展名?例如,如果我有" test.exe",我怎么会得到" .exe"?

Gav*_*ock 42

my $file = "test.exe";

# Match a dot, followed by any number of non-dots until the
# end of the line.
my ($ext) = $file =~ /(\.[^.]+)$/;

print "$ext\n";
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 12

使用File :: Basename

  use File::Basename;
  ($name,$path,$suffix) = fileparse("test.exe.bat",qr"\..[^.]*$");
  print $suffix;
Run Code Online (Sandbox Code Playgroud)

  • 考虑到你必须提供你可以与匹配运算符一起使用的模式来完成同样的事情,我从来没有想过File :: Basename对这个工作有任何好处. (3认同)
  • 如果只是为了获得扩展,正常的正则表达式就足够了.但File :: Basename也会解析路径的其余部分.如果OP需要获得扩展需求,File :: Basename就派上用场了. (2认同)