如何测试 Perl 中是否存在与模式匹配的文件名?
我可以用 Perl 做这样的事情吗?含义是对文件名进行模式匹配并检查它是否存在。
if(-e "*.file")
{
#Do something
}
我知道要求系统列出存在的文件的较长解决方案;将其作为文件读取,然后推断文件是否存在。
Can I do something like this in Perl? Meaning pattern match on a file name and check whether it exists.
if(-e "*.file")
{
#Do something
}
I know the longer solution of asking system to list the files present; read it as a file and then infer whether file exists or not.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用
glob
返回与该模式匹配的所有文件的数组:如果您只是想要知道是否存在与模式匹配的文件,可以跳过赋值:
You can use
glob
to return an array of all files matching the pattern:If you simply want to know whether a file matching the pattern exists, you can skip the assignment:
在 Windows 上,我必须使用 文件::全局:: Windows 作为分隔反斜杠的 Windows 路径似乎不适用于 perl 的 glob。
On Windows I had to use File::Glob::Windows as the Windows path separating backslashes don't seem to work perl's glob.
在 *nix 系统上,我使用了以下方法并取得了良好的效果。
它会回复找到的匹配项数量,如果没有则回复 0。使其可以轻松地在“if”条件中使用,例如:
您可以使用的确切模式将取决于您的 shell 支持的模式。但大多数 shell 支持使用“*”和“?” - 我见过的所有地方的意思都是一样的。当然,如果您删除了对“标量”函数的调用,它将返回匹配项 - 对于查找这些变量文件名很有用。
On *nix systems, I've used the following with good results.
It replies with the number of matches found, or 0 if none. Making it easily used in 'if' conditionals like:
Exactly what patterns you could use would be determined by what your shell supports. But most shells support the use of '*' and '?' - and they mean the same thing everywhere I've seen. Of course, if you removed the call to the 'scalar' function, it would return the matches - useful for finding those variable file names.