Perl 中如何检查文件是否存在?

2023-12-05

我有一个相对路径

   $base_path = "input/myMock.TGZ";

myMock.TGZ是位于输入文件夹中的文件名。 文件名可以更改。但路径始终存储在$base_path.

我需要检查该文件是否存在于$base_path.


测试是否某物存在于给定路径,使用-e文件测试运算符。

print "$base_path exists!\n" if -e $base_path;

然而,这个测试可能比您预期的更广泛。如果该路径中存在普通文件,上面的代码将生成输出,但它也会针对目录、命名管道、符号链接或更奇特的可能性触发。查看文档了解详情。

鉴于延长.TGZ在你的问题中,你似乎期望纯文件而不是替代方案。这-f文件测试运算符询问路径是否通向纯文件。

print "$base_path is a plain file!\n" if -f $base_path;

perlfunc 文档涵盖了很长的列表Perl 的文件测试运算符涵盖了您在实践中会遇到的许多情况。

  • -r
    文件可由有效 uid/gid 读取。
  • -w
    文件可通过有效 uid/gid 写入。
  • -x
    文件可由有效 uid/gid 执行。
  • -o
    文件由有效 uid 拥有。
  • -R
    文件可由真实 uid/gid 读取。
  • -W
    文件可由真实 uid/gid 写入。
  • -X
    文件可由真实的 uid/gid 执行。
  • -O
    文件由真实的 uid 拥有。
  • -e
    文件已存在。
  • -z
    文件大小为零(为空)。
  • -s
    文件的大小非零(返回大小以字节为单位)。
  • -f
    文件是一个普通文件。
  • -d
    文件是一个目录。
  • -l
    文件是符号链接(如果文件系统不支持符号链接,则为 false)。
  • -p
    File 是一个命名管道 (FIFO),或者 Filehandle 是一个管道。
  • -S
    文件是一个套接字。
  • -b
    文件是块特殊文件。
  • -c
    文件是字符特殊文件。
  • -t
    文件句柄打开到 tty。
  • -u
    文件已设置 setuid 位。
  • -g
    文件已设置 setgid 位。
  • -k
    文件已设置粘滞位。
  • -T
    文件是 ASCII 或 UTF-8 文本文件(启发式猜测)。
  • -B
    文件是一个“二进制”文件(与-T).
  • -M
    脚本启动时间减去文件修改时间(以天为单位)。
  • -A
    访问时间相同。
  • -C
    inode 更改时间相同(Unix,其他平台可能有所不同)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Perl 中如何检查文件是否存在? 的相关文章

  • Perl OO 方法调用第一个参数值 (->)

    就 Perl OO 而言 到底做了什么 gt do 例如我拨打 main 电话 result a b gt mymethod 在我定义的包中mymethod 我使用以下内容 my class 总的来说 我显然没有向mymethod 那么哪里
  • 如何在 Perl 中取消导入函数?

    我正在尝试删除导入的符号 以便它们不能用作对象中的方法 但是no似乎不起作用 也许我不明白不 或者还有其他方法 use 5 014 use warnings use Test More still has carp after no car
  • 如何从 Perl 调用 gnuplot 脚本

    我有一个 gnu gp 文件 grphist conf set terminal canvas Terminal type set to canvas Options are solid butt size 600 400 fsize 10
  • 哪一个代表null? undef 或空字符串

    我想插入null在表的一列中 哪一个代表null undef或空字符串 应该使用哪一种 为什么 我知道关于defined我可以检查一下 但我更多的是从数据库的角度来看 代表哪一个null更合适吗 Update 我在用DBI module D
  • 我的 Perl 脚本中的 findnodes 语句有什么问题?

    我有一个简单的 xml 文件 如下所示
  • 如何设置 $!在 Perl 中

    我想在 perl 中编写一些设置 的函数 与内置 perl 函数类似 当我尝试执行此操作时 它抱怨 参数 无法创建管理员用户 在标量分配中不是数字 我试过用谷歌搜索这个 但不幸的是谷歌不会在 所以结果很难得到 if createUser a
  • 多个与单个 Catalyst 应用程序

    我有多个作为 FCGI 运行的 Catalyst 应用程序 将它们整合为具有多个控制器的单个控制器是否有好处 Thanks Simone 内存 大概吧 我认为每台服务器至少要保留 15MB 左右 因此如果您在 3 台服务器上运行 3 个应用
  • Perl 中字符串之间的字符匹配计数

    我有一个字符串 例如字符串 1 需要与另一个字符串 字符串 2 匹配 两个字符串的长度相同并且不区分大小写 我想打印两个字符串之间的字符匹配数 E g String 1 stranger String 2 strangem Match co
  • 从日志尾部提取匹配行后退出

    我使用范围运算符来提取日志文件的一部分 例如 tail F logfile perl ne print if b d 现在 一旦提取的部分匹配 我就尝试退出该过程 我尝试过 tail F logfile perl ne print if b
  • Bash - 在 perl 正则表达式中使用变量以及匹配组

    这是我在 stackoverflow 上的第一篇文章 如果我错过了一些重要的内容 请原谅我 我目前遇到以下问题 目标是根据我准备的文件列表动态替换端口号find 这些文件中的所有端口均以数字 4 开头 有 5 位数字 现在是棘手的部分 我只
  • Term::ReadLine - 我需要点击向上箭头两次才能检索历史记录

    我正在使用 Term ReadLine 并遇到一个奇怪的问题 我需要点击向上箭头两次才能从 addhistory 中检索项目 这是我正在使用的脚本 use Term ReadLine my term Term ReadLine gt new
  • Moose:属性值更改时缓存的计算结果会过期吗?

    在我们的类中 我们有一个模式 我们创建一个属性来表示 计算值 出于显而易见的原因 我们想要缓存计算值 然后当基础值之一发生变化时使缓存失效 所以我们目前有这个 package FooBar use Moose has foo gt acce
  • Perl 导入到我的所有包中?

    我倾向于经常使用 Data Dumper 最终我的 pl 代码中每个包的顶部都有以下样板 use strict use warnings use Data Dumper Data Dumper Deparse 1 Data Dumper P
  • 如何轻松地将 Ajax、perl 和 JSON 结合使用?

    我正在尝试使用 Ajax 制作一个网页 Example 我创建了一个 Perl CGU 文件来触发一个简单的帖子 文件 test cgi name 托马斯 回复短信 你的名字是托马斯 我创建了一个可以使用该帖子的 html 文件 但随后页面
  • 在 Perl 中使用数据引用的正确方法

    我有一组想要处理的数据 为了简化我的代码 最好通过指向原始数据的引用数组来访问我的数据的某些子集 比解释更好的是 我写下了这个例子 它还没有工作 最后 我想更新原始数据 而不必更新所有子集 用 Perl 可以做这样的事情吗 usr bin
  • Perl:HTTP::微小删除留下损坏的锚标记

    我编写了一个脚本 该脚本收集从数据库读取的缓冲区内的所有 URL 检查该页面是否仍然存在 并使用 HTTP Tiny 从缓冲区中删除 URL 如果该 URL 无法访问或返回无效 问题是 HTTP Tiny 删除左锚标记 例如此处无效的文本
  • grep 两个分隔符之间的子字符串

    我有很多bash使用的脚本perl内的表达式grep为了提取两个分隔符之间的子字符串 例子 echo BeginMiddleEnd grep oP lt Begin End 问题是 当我将这些脚本移植到运行的平台时busybox 融合的 g
  • Perl 正则表达式图灵完备吗?

    我见过 Ruby 和 Perl 程序员做了一些事情复杂的代码挑战 https codegolf stackexchange com questions 3596 regex validating regex完全用正则表达式 这前瞻和后瞻 h
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用
  • 快速 Perl signint 处理程序

    收到 Ctrl C 时处理程序清理的最方便 最清晰的方法是什么 例如 当我的套接字服务器以这种方式被终止时 TCP 套接字永远不会关闭 我想要一个很好的衬里 我可以将其放在程序的顶部来设置 sigint 处理程序 或类似 atexit 的东

随机推荐

  • Ant zip 任务默认排除哪些文件?

    我正在运行 Ant zip 任务来压缩 Unix 系统上目录的全部内容
  • 和 做什么?

    我正在读一本关于 html 开发的书 我对这本书还很陌生 尽管这本书在一个月前 2011 年 11 月 才第一次出版 但作者是一位经验丰富的编码员 可能使用 因为形式中的动作是老派的吗 因为我试图了解示例代码的要点 但找不到解释form a
  • 单缓冲区;多个插座; Linux 下的单个系统调用

    Linux 是否有任何本机内核工具可以将提供的缓冲区发送 到一组套接字 一种向量 I O 除了套接字句柄而不是缓冲区 目标是减少在某些情况下涉及的 u k 转换的数量 例如 您需要向 n 个客户端广播一些状态更新 这需要迭代每个套接字并发送
  • 从字符串中提取最大数字

    我正在尝试使用 Excel 中的函数从字符串中提取所有数字 第二次 我想提取字符串中包含的最大值 我的字符串看起来像 ATCG 12 5 TTA 2 5 TGC 60 28 期望的输出 60 28 第一次 我尝试用我的函数提取所有数字 但它
  • 突出显示行中特定单元格的值与前一行的值不同的单元格

    我想应用一些条件格式 将一行的每个单元格与前一行的单元格进行比较 如果不同 则该行会突出显示 我使用的是 Excel 2007 这可能吗 如果是这样 有人可以向我提供将其应用于整个数据表的步骤吗 对的 这是可能的 这在以前版本的 Excel
  • 我无法理解这段使用递归产生排列的代码

    def permute2 seq if not seq Shuffle any sequence generator yield seq Empty sequence else for i in range len seq rest seq
  • PHP £ 符号前有奇怪的字符?

    由于某种原因我得到了 76756687 当我在表单上的文本字段中输入 时出现奇怪的字符 正如您所怀疑的 这是一个字符编码问题 页面是否设置为使用 UTF 8 字符集 这种编码确实不会出错 此外 您可能希望在退出时对英镑符号进行实体编码 po
  • Gerrit 中缺少依赖项

    我对 Gerrit 进行了四处更改 每处都取决于之前的更改 当然 第一个除外 我已经放弃了第二和第三并回顾了第一和第四 由于first 不依赖于任何东西 Gerrit 设法自动合并它 现在 第四个 取决于废弃的第三个 是一个真正的问题 格里
  • Bootstrap 下拉菜单出现在其他元素后面 - IE7

    我正在使用 Bootstrap 2 3 1http twitter github io bootstrap index html 所以我使用他们的 下拉菜单 类来创建一些简单的快速使用下拉菜单 但由于某种原因IE7它们出现在我网站上的文本和
  • 使用neo4j客户端在动态查询中返回多值

    按照我问的问题 使用 neo4j 客户端构建动态查询 我得到了关于如何仅使用字符串动态返回值的答案 当我尝试使用语法从失败的查询中返回多个值时 我尝试了以下查询 var resQuery2 WebApiConfig GraphClient
  • a href 链接不可点击

    我正在构建的网站遇到问题 我有一个菜单 其中包含 2 个列表项链接 称为 默认 和 测试 但在 Firefox 中我无法单击它们 在 IE 中 它们有效 我认为这是页面上项目的 z index 问题 但我无法解决它
  • 如何在Python中修改dbf文件

    假设我在根目录下的一些文件夹中有不同数量的dbf文件 d myfolder dbf 文件的内容如下所示 Field1 11110481123 12150480021 我想添加一个字段 例如 Field1 仅包含值的最后 4 位Field2
  • 通过 Gmail 在 .NET 中发送电子邮件

    我没有依赖我的主机发送电子邮件 而是考虑使用我的主机发送电子邮件 Gmail帐户 这些电子邮件是发送给我在节目中演奏的乐队的个性化电子邮件 有可能做到吗 请务必使用System Net Mail 不是已弃用的System Web Mail
  • 如何在猫鼬中填充其他集合的子文档?

    ASchema new mongoose Schema name String B BSchema var BSchema new Schema name String var CSchema new Schema name String
  • 多个错误代码配置web.xml

    我想将所有错误定向到我的 Errorsevlet 而不明确指定所有代码 有什么办法可以这样做吗
  • Scala App Trait 和 main 内部如何工作?

    嗨 我是 Scala 新手 据我所知 在scala中创建入口点有两种方法 一种是用对象定义main方法 另一种是扩展App特征 我想知道如何App特质有效 所以我检查了来源AppTrait 但是里面充满了令人困惑的代码 该代码表示 该应用程
  • 验证 php 表单中的手机号码

    我想验证 10 位数字的手机号码 并在输入数据库时 添加前缀 0
  • 中国 Google 地图应使用哪个网址?

    我想加载谷歌地图 JavaScript API 并且我希望可以从内部访问它中国防火墙 Google 推荐 http maps google cn 但如果我使用它 对于世界其他地区的人来说可能会更慢 据我所知 中国的防火墙并没有阻止http
  • 如何确保某人在按下我网站上的“喜欢”按钮时已成功“喜欢”我的网站?

    我正在开发一个rails 3应用程序 它需要一个facebook 喜欢 按钮并显示点击它并完成喜欢过程 登录facebook等 的人的个人资料图片 由于其他原因 我的应用程序需要知道何时 current user已成功喜欢我的网站 例如 如
  • Perl 中如何检查文件是否存在?

    我有一个相对路径 base path input myMock TGZ myMock TGZ是位于输入文件夹中的文件名 文件名可以更改 但路径始终存储在 base path 我需要检查该文件是否存在于 base path 测试是否某物存在于