当已知非扩展名时,识别文件名扩展名的有效方法


my $cover="/******/gamebooks/Accounts/$Author/MyBooks/$Book/images/cover/cover.jpg";
if(-e $cover){
$cover=$uri->encode("https://fightingfantasy.net/gamebooks/Accounts/$Author/MyBooks/$Book/images/cover/cover.jpg");
}
else{
# print "$cover not found";
$cover="$perl_scriptlocation/resources/images/beholder.jpg";
}

这是我目前的代码——目录中有一个名为cover的文件-扩展将是浏览器通常显示的任何有效的图形格式。我可以列出目录,去掉包含父节点和子节点的结果,然后使用剩余的结果,但这似乎是一种非常冗长的方法……有人有更快的方法吗?我想通配符正在以某种方式使用。。。非常感谢。

对于那些感兴趣的人(感谢第一个答案(,我的最终解决方案是:

my $coverbase="/******/gamebooks/Accounts/$Author/MyBooks/$Book/images/cover/cover";
my $cover = glob qq("${coverbase}.*");
if(-e $cover){
$cover=~/.*/(.*)/i;
$coverfile=$1;
$cover=$uri->encode("https://fightingfantasy.net/gamebooks/Accounts/$Author/MyBooks/$Book/images/cover/$coverfile");
}
else{
# print "$cover not found";
$cover="$perl_scriptlocation/resources/images/beholder.jpg";
}

这比我知道glob之前唯一的选择要令人满意得多,非常感谢(是的,我知道它可以被剥去两三行,仍然很优雅,但我还没有!(

我不确定我是否真的理解你的问题。但我假设你有基本名称(例如"picture"(,并希望有扩展名,假设这样的文件存在(例如"picture.jpg","picture.png"..(。在这种情况下,glob会有所帮助:

my ($file) = glob("$basename.*") or die "no such file exists";

相关内容

  • 没有找到相关文章

最新更新