如何使用 Perl 检查文件的扩展名?

2024-04-24

对于我的 Perl 脚本,一个文件作为参数传递。该文件可以是.txt文件或一个.zip文件包含.txt file.

我想编写看起来像这样的代码

if ($file is a zip) {

    unzip $file
    $file =~ s/zip$/txt/;
}

检查扩展的一种方法是进行拆分.然后匹配数组中的最后一个结果(由 split 返回)。

有更好的办法吗?


您可以为此使用 File::Basename。

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

use File::Basename;

my @exts = qw(.txt .zip);

while (my $file = <DATA>) {
  chomp $file;
  my ($name, $dir, $ext) = fileparse($file, @exts);

  given ($ext) {
    when ('.txt') {
      say "$file is a text file";
    }
    when ('.zip') {
      say "$file is a zip file";
    }
    default {
      say "$file is an unknown file type";
    }
  }
}

__DATA__
file.txt
file.zip
file.pl

运行这个给出:

$ ./files 
file.txt is a text file
file.zip is a zip file
file.pl is an unknown file type
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Perl 检查文件的扩展名? 的相关文章

  • 有类似 Fabric for Perl 的东西吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我很喜欢Fabric http fabfile org 对于个人项目 但我的日常工作是在面向 Perl
  • PHP:删除任何扩展名的文件?

    当用户上传照片时 它会检查他们是否已经拥有一张照片 如果他们这样做 我希望它删除旧的 可以有任何扩展名 然后放入新的 有没有办法在不从数据库获取旧扩展的情况下做到这一点 目前的代码 del members gt prepare insert
  • 使用 OpenFileDialog 选择文件和文件夹

    我做了很多研究来找到这个问题的合适答案 但我失败了 我可以在这里和其他论坛上看到多个问题 但没有明确的答案带来明确的解决方案 我希望 OpenFileDialog 为我选择一个 多个文件 并允许我也选择文件夹 例如 A 多个文件或多个文件夹
  • 在 Python 中通过 TCP 套接字发送文件

    我已经成功地将文件内容 图像 复制到新文件 然而 当我通过 TCP 套接字尝试同样的事情时 我遇到了问题 服务器循环未退出 客户端循环在到达 EOF 时退出 但服务器无法识别 EOF 这是代码 Server import socket Im
  • 从相对路径读取文件

    我知道这个问题之前已经被问过 1000 次了 我确实尝试了所有解决方案 Java项目中如何从相对路径读取文件 java io File 找不到指定的路径 https stackoverflow com questions 3844307 h
  • 打开 PDF 或文件夹

    我尝试打开在 Flash Player 中运行的 swf 应用程序中通过鼠标单击触发的 PDF 或文件夹 在查找器 资源管理器中 通过 urlRequest 打开 PDF 和navigateToUrl 总是打开浏览器 我读到this htt
  • File.Delete 进程无法访问该文件,因为该文件正在被另一个进程使用

    public bool DownloadMp3File DownloadedMp3 mp3 WebClient client new WebClient string filePath bool wasDownload false try
  • 奇怪的 0x0D 被添加到我的二进制文件中

    我有这个奇怪的问题 我将 16 个字符写入一个二进制文件 然后写入 3 个整数 但是当我使用某些二进制文件查看器打开文件时 我看到添加了一个额外的字节 等于0x0D 这是我的代码 for i 0 i lt 16 i if i lt strl
  • 如何使用 Perl 从纯文本中提取 URL?

    我需要 Perl 正则表达式来解析纯文本输入并将所有链接转换为有效的 HTML HREF 链接 我已经尝试了在网上找到的 10 个不同版本 但没有一个可以正常工作 我还测试了 StackOverflow 上发布的其他解决方案 但似乎都不起作
  • Python下载器

    所以我试图编写一个脚本来使用 python 下载图片文件 我使用谷歌找到了这个 def 但是我下载的每张图片都 损坏 了 有任何想法吗 def download url Copy the contents of a file from a
  • 如何使用 -fPIC 标志重新编译 libperl.a 目标文件?

    当试图修复一些问题时出现了这个问题安装问题 https stackoverflow com q 43191675 2173773 with QtCore4 https metacpan org pod QtCore4 在某一点make尝试运
  • 将文件读入 Perl 中的变量 [重复]

    这个问题在这里已经有答案了 可能的重复 在 Perl 中将文件转换为字符串的最佳方法是什么 https stackoverflow com questions 206661 what is the best way to slurp a f
  • PHP is_file 和服务器根相对路径

    请问如何使用 is file 和 folder file jpg 这样的路径 谢谢你 如果路径以 开头 则表示该路径是绝对路径 当路径是相对路径时 即不以 开头 则采用相对于 php 脚本的路径 如果您希望 folder file jpg
  • 如何在 Perl 中访问名称包含在变量中的常量?

    我有一组用 Perl 声明的常量 use constant C1 gt 111 use constant C2 gt 222 use constant C9 gt 999 my which constant C2 我如何构造一个 Perl
  • CMake:将为 lib 构建的对象文件重用到另一个 lib 目标中

    我正在尝试将我的项目转移到CMake 同时对编译过程进行一些优化 这是交易 我有几个子目录 必须 每个子目录都编译成静态库 这有效 我想将每个子目录中的所有目标文件收集到另一个更大的 完整的静态库中 它看起来像这样 libBig a mad
  • 在 Perl 中,如何从父进程向子进程发送消息(或信号),反之亦然?

    我正在编写一个管理多进程的程序 这就是我所做的 而且效果很好 但现在 我想将消息从子进程发送到父进程 反之亦然 从父进程到子进程 你知道最好的方法吗 你知道我所做的是否是我想要的正确方法 从子进程到父进程发送消息 信号或共享内存 反之亦然
  • 在文件中查找一行并将其删除

    我正在寻找一个小代码片段 它将在文件中找到一行并删除该行 不是内容而是行 但找不到 例如 我在以下文件中 我的文件 txt aaa bbb ccc ddd 需要有这样的功能 public void removeLine String lin
  • Perl 命令或模块,如 Linux“文件”命令

    我有一个下载文件的脚本 但这些文件在下载之前没有任何有关它们的信息 在为 Linux 编写代码时 我刚刚调用了qx file filename 查看它是否是 JPEG 图像 如果不是则将其删除 然而 我现在正尝试重写为独立于平台的纯 Per
  • 使用正则表达式惰性(不贪婪)匹配多个组

    我想获取成对之间任何值的内容
  • 使用文件名将文件一个文件夹复制到 Google 云端硬盘中的另一个文件夹

    我的谷歌云端硬盘帐户中有两个文件夹 文件夹 1 和 文件夹 2 文件夹1 内有多个文件 假设有一个文件名Test txt我想复制Test txt使用 Driveapp 将文件保存到 文件夹 2 我找到了代码 但它仅适用于 文件唯一 ID 我

随机推荐

  • 如何在 Swift 中打开 URL?

    openURL已在 Swift 3 中弃用 任何人都可以提供一些如何替换的示例openURL options completionHandler 尝试打开网址时有效吗 所有你需要的是 guard let url URL string htt
  • C++ 中有标准的日期/时间类吗?

    C stl 有标准时间类吗 或者我是否必须在写入流之前转换为 c 字符串 例如 我想将当前日期 时间输出到字符串流 time t tm ostringstream sout sout lt lt tm lt lt ends 在本例中 我将当
  • 有没有好的方法来检查 Datastax Session.executeAsync() 是否引发异常?

    我试图通过调用来加速我们的代码session executeAsync 代替session execute 用于数据库写入 我们有数据库连接可能会关闭的用例 目前是之前的execute 当连接丢失 集群中没有可访问的主机 时抛出异常 我们可
  • 如何检查字符串是否是数字? [复制]

    这个问题在这里已经有答案了 我有一个 GPA 计划 它适用于equalsIgnoreCase 方法比较两个字符串 即字母 a 与用户输入 检查他们是否输入 a 但现在我想添加一个异常 其中包含当输入数字时执行的错误消息 我希望程序意识到整数
  • 与 C++ 中的对象数组混淆

    所以我首先学习了Java 现在我正在尝试转向C 我在让数组正常工作方面遇到了一些困难 现在我只是想创建一个对象 Player 的数组并用一个对象填充它 但我收到错误 Player players new Player 1 players 0
  • Pydub 按样本切片音频片段

    假设我有两个采样率相同的音频片段 它们是从 Pydub 中的 wav 文件导入的 并且假设我知道哪个更短 现在假设我想将较长的音频文件分成两个片段 以便第一个片段与较短的音频文件具有完全相同的长度 精确到相同的样本数量 并将这两个片段中的每
  • 在离散 ggplot x 轴两侧添加不同数量的额外空间

    我有一个带有离散 x 轴的图 我想调整刻度两侧的额外空间 使其左侧较小 右侧较大 以便长标签适合 scale x discrete expand c 0 1 不是我的朋友 因为它总是同时在双方工作 这个问题 https stackoverf
  • 提取 HTML 表单的字段名称 - Python

    假设有一个链接 http www someHTMLPageWithTwoForms com 它基本上是一个具有两种表单 例如表单 1 和表单 2 的 HTML 页面 我有这样的代码 import httplib2 from Beautifu
  • 解析回调未定义 - 简单的 Webscraper (Scrapy) 仍未运行

    我google了半天还是没能搞定 也许你有一些见解 我尝试不是从终端而是从脚本启动我的抓取工具 这在没有规则的情况下运行良好 只需产生正常的解析函数即可 一旦我使用规则并将 callback parse 更改为 callback parse
  • 无法使 PHP PDT xDebug 在 Eclipse 中的断点处停止

    通过选择 在第一行中断 调试器会在输入每个文件时激活 从而允许我单步进入和退出代码 但是 必须通过 50 万步才能到达开始变得有趣的地步 这有点麻烦 我的设置是 WIMP Window 7 PHP 5 3 xDebug config zen
  • VotingClassifier:不同的功能集

    在我的例子中 我有两个不同的功能集 因此 行数相同且标签相同 DataFrames df1 A B C 1 4 2 1 4 8 2 1 1 2 3 0 3 2 5 df2 E F 6 1 1 3 8 1 2 8 5 2 labels lab
  • Azure DevOps 构建变量 Build.Reason 是否可以在 YAML 模板编译时条件中使用?

    我想要这样的东西 if or eq parameters RunTestsOnPRBuildOnly false eq variables Build Reason PullRequest template ps module run te
  • F# 中的组总计 - 使用序列很容易,可以使用列表吗?

    给定一组 id value 元组序列 很容易计算组总数 与使用 C 和 LINQ 执行此操作的方式几乎相同 let items g1 5 g2 10 g1 20 let groupsums items gt Seq groupBy fun
  • Android 中的 GZIP

    我只是想问一下在Android 中使用HttpClient 发送gzip 进行post 请求 在哪里获取要在 GZIPOutputstream 中传递的 OutputStream 有片段吗 您好 UseHttpUriRequest 如下所示
  • 如何正确区分树(即嵌套的字符串列表)?

    我正在使用由嵌套字符串列表组成的数据类型的在线编辑器 请注意 如果每次更改单个值时我都要传输整个结构 那么流量可能会变得难以忍受 所以 为了减少流量 我想到了应用 diff 工具 问题是 如何找到并报告两棵树的差异 例如 ah bh ha
  • Javascript分布式计算[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么没有任何 Javascript 分布式计算框架 项目 这个想法对我来说绝对很棒 因为 客户端就是浏览器 可以使用AJAX进行迭代 网站管理
  • 使用 Socket.IO 的 Python 客户端到 nodeJS 服务器

    我正在尝试使用 socket io 将值从我的树莓派 在 python 2 7 9 中 发送到我的 nodeJS 服务器 我的目标是通过 websocket 连接从我的 pi 连续发送许多值到我的节点服务器 本地 该服务器应该获取这些值并将
  • NSFetchedResultsController 在 VIPER 架构中的位置是什么?

    In VIPER https www objc io issues 13 architecture viper 与MVC不同的是 NSFetchedResultsController的角色和地点没有那么明确的定义 把它放在交互器上合适吗 根
  • 如何获取当前显示的片段?

    我正在Android中玩fragment 我知道我可以使用以下代码更改片段 FragmentManager fragMgr getSupportFragmentManager FragmentTransaction fragTrans fr
  • 如何使用 Perl 检查文件的扩展名?

    对于我的 Perl 脚本 一个文件作为参数传递 该文件可以是 txt文件或一个 zip文件包含 txt file 我想编写看起来像这样的代码 if file is a zip unzip file file s zip txt 检查扩展的一