1752_使用Perl实现目录遍历

news2024/9/28 1:20:29

全部学习汇总: GreyZhang/speed_emacs: Try to make a new emacs configuration which is fast even on windows! (github.com)

         关于Perl和Python的优劣我不去做什么分析,也不去发表什么深入的见解。我个人的学习过程是先Perl后Python再回到Perl。因为工作原因,我需要处理文本的时候比较多。就像小骆驼书中说的,Perl适合90%的工作是处理文本而其它时候去处理其它事情的工作。在过去的一年中,我几乎完全放弃了Perl,工作中用到的各种批处理全都是Python来实现的。实现的过程也有不少愉快的经历,我也确实感受到了Python实现一个功能的那种条理性。不像Perl,丑陋而魔幻,Python就是简洁、有效。

         前面说到了Python的简洁,但是我一直不认同Python是简短的。至少在我目前的水平层次(初学者)上,我使用Python确实写不出如同Perl那么精简的代码。不过,我还是认可使用Python时候的那种愉快。过去的一年中,我用Python尝试了简单的文本处理、与MATLAB的交互、网络访问、简单的爬虫、电子表格分析、绘图、完成数据标定、数据分析、计算等等工作。直到现在,Python还是我首选的计算器。不过在使用的过程中,我始终没有找到使用Perl时候的那段感觉——干净利落、代码简短而奏效。

         综合考虑,在处理一般的工作时Perl是更适合我的。虽说Python在写大型程序或者代码量变大的时候看起来调理、比较好管理,但是我所处理的工作通常几十行代码全都搞定,而正则表达式的干净利落上Perl还是有很大优势的。

         在使用Python的时候,os模块的walk函数给了一份惊喜。之前的工作单位不提供外部网络,一切都靠自己的入门教程。Walk是我离职之后开始掌握的,迅速在我的各个脚本中大展身手。我也在写Python不顺手的时候想着切换回Perl,但是好几次因为这个简单的功能没有去切换。可我总觉得Perl中应该也有类似的功能,之所以没有查找是因为第二家工作单位我呆了几十天变滚蛋了,而如今这家单位依然不提供外部网络的访问权限。不过,这家公司的加密系统倒是让我无奈的在坚持了一年后决定放弃Python转战Perl。自己花时间网络一搜,还真有这么个功能。写的有些简单的文档看完后简单一试,又是惊喜连连。我靠!比Python简单!

         而这个功能就是File::Find。它不仅能够完成之前我用Python的walk函数完成的功能,而且更简单了,因为可以在处理的过程中自动切换目录。而Python中的walk则不具备这个特性,因此在处理一个目录的时候我通常得在大脑中不断模拟目录切换的过程。

         写一个简单的Perl遍历目录实例:

         find在遍历目录的同时也充当了迭代器的作用,而wanted函数的名字是可以自己去更改的。在每次遍历迭代的操作中,会有代码中9-11行中的三个默认内置变量。其中$_代表的是遍历到的当前文件,$File::Find::name是带有目录的文件名,$File::File::dir是当前的目录。运行结果:

         其中,带有完整目录的目录最前段是与传入遍历的目录名称一致的。如果想要一个完整的名字可以在遍历前获取当前目录的名称进行拼接,也可以直接把需要遍历的目录名称写一个全名。

         例如:

         以上代码的运行结果如下:

         相比Python中的类似功能,使用Perl确实有点不费脑力。在遍历目录这一关通过之后,相信日后工作中的Perl在我工具箱中将会更加活跃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/688386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2023.6.26】记达梦数据库基于信创服务器麒麟OS报错与优化

一、场景描述 OS:银河麒麟V10(GUI)CPU:鲲鹏920达梦数据库:V8 (基于平台信创:麒麟V10、鲲鹏架构)金蝶中间件:V9 二、达梦数据库报错记录 报错1:(SWT:18564&…

基于Java削面快餐店点餐服务系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

cmd中输入npm install,回车——安装node modules依赖,出现报错的【解决方法】

目录 1.正常情况是: 2.当前问题: 3.解决方法: 当拿到一个前端项目的代码文件夹的时候,想要启动项目。 如果项目的代码文件夹里面没有node modules文件夹: 需要打开cmd,然后在里面输入 npm install (可…

c++初始化列表和静态成员

文章目录 一、初始化列表二、静态(static)成员 一、初始化列表 类对于成员变量的赋值有两种方式 函数体内赋值初始化列表 函数体内赋值就是直接在构造函数中赋值即可,而初始化列表它是较为特殊的一种方式! 初始化列表是在构造函数()之后以:开始,然后后…

查询穿梭框实现

技术栈: 使用vue3 的composition api 和 tsx 进行开发 一、需求描述 点击编辑,显示穿梭框: 可将左侧维度拖动至右侧,已选维度可上下拖动调整顺序。 二、需求分析 1、状态传递过程 我们首先来分析一下,整个流程中的…

魔改xxl-job,彻底告别手动配置任务!自动注册xxljob定时任务

xxl-job是一款非常优秀的任务调度中间件,轻量级、使用简单、支持分布式等优点,让它广泛应用在我们的项目中,解决了不少定时任务的调度问题。 我们都知道,在使用过程中需要先到xxl-job的任务调度中心页面上,配置执行器…

WiFi模块测试|高通QCA9531方案WiFi模块网页配置说明-SKW99/SKW100

本篇以高通QCA9531方案无线路由WiFi模块SKW99为例,简单介绍 高通方案无线路由WiFi模块的软件使用。友情提示:多图,请在WiFi环境下阅读。 以SKW99为例,在SKW99规格书找到模块系统框图、PIN脚图及各个PIN脚的描述定义;之…

AutoSAR系列讲解(入门篇)3.4-RTE对Ports的支撑(下)

一、C/S接口的实现 之前在第二章AppL中讲过了C/S接口,这里再更加深入的说明一下其实现的原理:首先,C/S接口就是客户/服务接口,这个接口就是客户来调用服务 端的操作的一个接口。也就是我写着写着,发现我想要调用一个函…

【Figma技巧】布尔变量控制图层显隐

用2023年6月22日更新的Figma最新功能,实现按钮控制图层显隐的交互。 实现效果 步骤 1. 创建本地变量 点击右侧面板中的Local variables弹出变量面板,点击底部Create variable按钮,创建一个Boolean布尔变量。 本案例中,我需要分…

从0开始Jmeter接口测试实战

在之前的文章中给大家介绍过接口测试文档和接口测试用例示例,本文基于Jmeter工具给大家介绍一下如何实现接口测试用例:包括发起Http请求,绕过登陆,验证响应。JMeter是Apache组织开发的基于Java的压力测试工具。具有开源免费、框架…

Python|Pyppeteer操作浏览器,弹出文件选择框,实现自动选择“指定文件”(14)

前言 本文是该专栏的第14篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 使用pyppeyeer操作浏览器的时候,可能有时候会遇到这样的情况,如下图所示: 通过程序脚本自动点击某个按钮之后,触发一个弹出框,需要输入对应的文件路径。经验丰富的同学,可能会想到…

深入浅出 - 单例模式

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

【MySQL】幽深不可测,登此方觉心

详解Mysql安装教程 一、MySQL基础 1、MySQL是什么? MySQL是一种用关系型数据库管理系统的软件。它是一种开源数据库,可以利用它来存储、管理和访问各种类型的数据。MySQL可用于多种应用程序,包括网站、电子商务系统、移动应用程序、企业级应用程序等…

Clickhouse物化视图原理和使用详解

前言 ClickHouse广泛用于用户和系统日志查询场景中,主要针对于OLAP场景,为业务方提供稳定高效的查询服务。在业务场景下,数据以不同的格式、途径写入到clickhouse。用传统JOIN方式查询海量数据,通常有如下痛点: 每个查询的代码冗…

【Java】ConcurrentHashMap1.8源码保姆级解析

目录 ConcurrentHashMap 1.8的优化 初始化流程 扩容流程 读取数据流程 计数器的实现 ConcurrentHashMap 1.8的优化 存储结构的优化 数组链表 -> 数组链表红黑树 写数据加锁的优化 扩容的优化(协助优化) 计数器的优化 LongAddr -> Cell[] 分…

力扣算法练习(二)

主要参考自力扣官网解法 1.最长回文子串(5) 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab"…

【Java】JVM学习(七)

JVM调优 堆空间如何设置 在分代模型中,各分区的大小对GC的性能影响很大。如何将各分区调整到合适的大小,分析活跃数据的大小是很好的切入点。 活跃数据的大小:应用程序稳定运行时长期存活对象在堆中占用的空间大小,也就是Full …

Git安装及使用图文教程详解(附带安装文件)

Git安装及使用图文教程详解(附带安装文件) 原创:丶无殇  2023-06-26 文章目录 下载安装下载安装验证安装成功版本查看 基础指令Git常用指令【首次必须】设置签名用户、邮箱1.初始化本地仓库2.查看本地库状态3.创建文件4.添加文件至暂存区5…

【DCT变换】Python矩阵运算实现DCT变换

一、前言 DCT变换(离散余弦变换) 是数字图像处理过程中广泛采用的一种操作,用于将空域的图像转换为频域表示,从而能够更有效地进行压缩、滤波和特征提取等处理。它在许多应用领域中发挥着重要的作用,尤其在图像和视频…

感知机(Perceptron)的原理及实现

1.感知机(Perceptron)的原理及实现 声明:笔记来源于《白话机器学习的数学》 感知机是接受多个输入后将每个值与各自权重相乘,最后输出总和的模型。 单层感知机因过于简单,无法应用于实际问题,但它是神经网络…