在 Windows 上使用 Perl,如何确保在 chdir 之后获得正确大小写的路径?

2024-03-03

考虑以下代码:

print cwd . "\n";
$str= "../source"; # note the lower case 's'    
chdir($str);
print cwd . "\n";

如果我当前的目录是c:\parentdir\Source(注意大写“S”),其输出将是:



c:/parentdir/Source
c:/parentdir/source
  

这会导致我的一个关心文件夹名称正确大小写的子例程出现问题。 $str 被传递到我的子例程中,因此我无法提前知道它是否具有正确的大小写。如何确定匹配路径的大小写正确名称$str?

更多详细信息请参见此处:

  • 我意识到../source这是一个病态的例子,但它有助于 说明问题。即使发生$str正在请求一个 当前文件夹以外的文件夹。
  • 我尝试了很多选择,包括rel2abs,全局搜索$str,还有其他人,但他们似乎都回来了”source“ 代替 ”Source".
  • 我可以搜索$str/..对于所有目录,将它们全部转换为 绝对路径并将它们与绝对路径版本进行比较$str, 但这似乎是一个黑客。我希望有更优雅的东西。

#!/usr/bin/perl

use warnings; use strict;
use Cwd;
use File::Spec::Functions qw( canonpath );
use Win32;

print canonpath( cwd ), "\n";

chdir '../source';

print canonpath( cwd ), "\n";

print canonpath( Win32::GetLongPathName( cwd ) ), "\n";

C:\DOCUME~1\...\LOCALS~1\Temp\t\Source> t
C:\DOCUME~1\...\LOCALS~1\Temp\t\Source
C:\DOCUME~1\...\LOCALS~1\Temp\t\source
C:\Documents and Settings\...\Local Settings\Temp\t\Source  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 上使用 Perl,如何确保在 chdir 之后获得正确大小写的路径? 的相关文章

  • Windows 上的 Node.js 和 Express

    今晚 我决定尝试在我的 Windows 7 计算机上使用 Express 构建一个简单的 Node js 应用程序 安装过程还算顺利 但 Express 拒绝配合 以下是我已采取的步骤 使用以下位置提供的 MSI 安装 Node jshtt
  • 规范化 solaris 上的路径名

    在 GNU 系统上我只会使用readlink f SOME PATH 但 Solaris 没有 readlink 我更喜欢在 bash 中运行良好的程序 但如果需要的话其他程序也可以 Edit 到目前为止 我想到的最好的方法是使用 cd 和
  • Parse::RecDescent 语法未按预期工作

    我所能做的就是 STRING PARAMS VARIABLE 和 FUNCNAME FUNCTION 似乎有问题 但我就是看不到它 use strict use Parse RecDescent RD ERRORS 1 Make sure
  • OpenSSL DH 密钥太小错误

    我正在尝试使用简单的 PERL 脚本连接到封闭的服务器 空调 usr bin perl use 5 10 1 use warnings use strict use IO Socket SSL use IO Socket SSL qw de
  • 如何轻松地将 Ajax、perl 和 JSON 结合使用?

    我正在尝试使用 Ajax 制作一个网页 Example 我创建了一个 Perl CGU 文件来触发一个简单的帖子 文件 test cgi name 托马斯 回复短信 你的名字是托马斯 我创建了一个可以使用该帖子的 html 文件 但随后页面
  • 如何编写 Perl 脚本来使用 curl 处理 URL?

    我有一个非常简单的任务 我有一个 crontab 每小时运行一个脚本 该脚本旨在简单地处理 URL 这就是我所拥有的 这不起作用 我收到语法错误 usr bin perl curl http domain com page html 我已经
  • 使用 Ansible 将二进制文件添加到 PATH

    我正在尝试安装Kiex https github com taylor kiex版本管理器Elixir http elixir lang org install html使用 Ansible 的编程语言 这些是我为此使用的戏剧 name K
  • “此应用程序已请求运行时以异常方式终止它”的原因是什么?

    Visual C 运行时抛出一个常见错误 此应用程序已请求运行时以异常方式终止它 请联系应用程序的支持团队以获取更多信息 该错误消息实际上是什么意思mean 让我用一个比喻来准确地解释我的问题 如果我看到一条消息 异常 访问冲突 0xc00
  • MIME::Lite - 无法发送邮件 [smtp.gmail.com 不支持 SMTP auth() 命令]

    use MIME Lite use warnings use MIME Base64 use Authen SASL use MIME Lite use MIME Base64 use Authen SASL use warnings us
  • 我怎样才能挂钩 Perl 的 use/require 以便抛出异常?

    如果文件已经加载 是否可以挂载到use require所以我可以抛出异常 在我即将到来的nextgen blacklist http github com EvanCarroll nextgen blob blacklist lib nex
  • 你能挽救我的负面回顾示例来传达数字吗?

    在 高级正则表达式 一章中掌握 Perl http oreilly com catalog 9780596527242 我有一个损坏的示例 我无法找到一个很好的修复方法 这个例子可能为了自己的利益而试图变得太聪明 但也许有人可以帮我解决它
  • 使用 BitmapEncoder 生成时如何使 GIF 循环重复

    我能够使用 BitmapEncoder C WinRT 创建动画 gif 但是 我一直无法弄清楚如何让GIF循环回来并从头开始 没有尝试太多 因为我不确定要尝试什么 搜索了更多要在 GIF 上设置的属性 但找不到任何相关内容 好吧 终于能弄
  • NHibernate 获取 & 字符串 Id

    我在 NHibernate 上有一个分配了字符串 Id 的实体 并且在通过 Id 获取实体时遇到了一些问题 例子 假设有这样的数据库记录 Id Description AAA MyDescription 现在 如果我使用搜索 ID aaa
  • 如何用perl逐句读取文本文件?

    我想逐句读取文本文件 我的问题是下面的代码仅根据时期分开 usr bin perl use strict use warnings my file data txt open FILE file my buffer while my sen
  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博
  • 如何通过命令行将Flash .fla编译为.swf? [复制]

    这个问题在这里已经有答案了 如何在基于 Windows 的操作系统上通过命令行将 Flash fla 文件编译为 swf 需要安装的命令行工具就可以了 谁能建议我该怎么做 以直接的方式 谢谢 您可以使用JSFL为 Flash IDE 编写脚
  • 无法启动 Windows 服务,错误 1064

    我编写了一个在 Win10 上运行的 Windows 服务 它运行得非常好 直到我决定对其进行一些更改 我重写了一些逻辑 在调试和发布配置中进行了测试 一切都很好 然后 我使用卸载了当前版本的服务installutil exe u serv
  • 批处理脚本 FOR 循环仅设置输出的第一个字母 wsl --list -q

    我正在编写一个批处理脚本 将文件从 Windows 目录复制到 WSL 发行版 其中一部分是选择将文件复制到哪个发行版 如果我使用命令wsl list q如果给我以下输出 Ubuntu 22 04 Ubuntu 18 04 我正在尝试使用此
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr
  • 无法从日志文件中提取特定信息

    我这里有日志文件我想提取以下信息 想要提取十六进制值 如果该行有第二个括号 0 9 想要提取十进制值 首先转换为十六进制 然后提取 9 gt 0x09 想要提取负值 25 先转换为十六进制然后提取 例如 25 gt FFE7 gt 想要提取

随机推荐

  • 从命令行调用 python 脚本而不先输入“python”

    问题 在命令行中 如何调用 python 脚本而无需键入python在脚本名称前面 这可能吗 Info 我编写了一个方便的脚本 用于从命令行访问 sqlite 数据库 但我有点不喜欢键入 python SQLsap args 而宁愿只键入
  • 从 RDF 到 html 的 XSLT 转换

    我正在尝试使用 XSLT 将 RDF 文件转换为 HTML 我正在使用我在网上找到的模板 http snippets dzone com posts show 1164 http snippets dzone com posts show
  • 使用 toString 进行 Java 语言设计

    他们决定不实施toString方法用于int 而是让它继承toString方法来自Object 他们确实实施了更合理的toString数组的方法 他们位于java util Arrays http docs oracle com javas
  • 谷歌地图 myoptions 不起作用

    我正在尝试自定义马萨诸塞州地图 以显示 10 个区 我已将链接添加到在 我的地点 中创建的地图 但无法使地图居中 缩放或标题 中心 LatLng 是伍斯特 没有任何效果 帮助 Thanks
  • 如何查看 PHP SOAP 客户端类生成的实际 XML?

    考虑以下 SOAP 客户端脚本示例 SOAP new SoapClient WDSL Create a SOAP Client from a WSDL Build an array of data to send in the reques
  • Ionic 3 Native:文件:{代码:5,消息:“ENCODING_ERR”}

    我正在使用文件 API 插件中的 checkFile 函数 https ionicframework com docs native file checkFile在 Ionic 3 中检查文件是否存在于本地 Promise 被拒绝并出现以下
  • 如何以安全的方式为 HTTPS 配置 OpenSSL?

    每个月 网络上都会有一些文章介绍某些应用程序或平台在 SSL 实施中使用过时的加密配置 这让我担心 我自己的实现怎么样 当我在应用程序中使用 OpenSSL 来提供和 或使用 HTTPS 时 我到底应该做什么才能以最安全的方式配置 Open
  • Heroku 上的 ffmpeg:无法识别的选项“预设”

    我在本地 Rails 应用程序中使用 ffmpeg 版本 1 2 4 来转换视频文件 当我在本地运行应用程序时 一切都按预期工作 当我部署到heroku时 我添加了ffmpeg的构建包 https github com shunjikoni
  • 反序列化 JSON 日期(无时区)

    从昨天开始 我遇到了一个让我头疼的问题 不知道如何处理 我的数据库中有一个日期字段 其中包含以下值 然后我的应用程序获取该值并将其发送到我的网络表单 价值仍然相同 没关系 在客户端 我使用 javascript 警报进行中断 以查看来自 J
  • 从 tkinter 中的文本小部件复制格式化文本

    我正在使用 tkinter 在 Python 中开发 APA 引文制作器 我使用文本小部件在生成引文后显示引文 但每当我复制文本 目前使用 ctrl c 快捷方式 时 它都会丢失其格式 是否有某种方法可以从文本小部件复制格式化文本 例如斜体
  • 在 Gallery 中嵌入 ListView

    目标是实现一个 Gallery 其适配器返回 ListView 换句话说 嵌入水平滚动 Gallery 中的垂直滚动 ListView 经过一些工作后它就可以工作了 但是当尝试水平滚动时 ListView 看起来非常不稳定 就像居中时有一些
  • 更智能的“ff-find-other-file”

    我正在开发一个项目 其中源代码组织在以下目录结构中 source include source include analysis source include tools source include utils source includ
  • 如何在 Google App Engine Java 应用程序的模块之间共享会话?

    当我通过以下方式在会话中存储某些内容时HttpSession在模块A中 HttpSession session req getSession true session setAttribute username Eng Fouad 然后我尝
  • 需要帮助找到正确的 T-SQL 查询

    我不太确定该怎么做 基本上我有一张这样的桌子 UserId DateRequested Approved ApprovedBy Notes 1 2011 05 26 0 NULL NULL 1 2011 05 27 0 NULL NULL
  • 如何使用键绑定使矩形在屏幕上移动?

    我试图创建的游戏是贪吃蛇 到目前为止我已经弄清楚如何使用paint Graphics g 一点JPanel 鼠标侦听器 现在我正在尝试创建一个将在屏幕上移动并使用键绑定或键侦听器的矩形 但我不知道应该如何处理此问题 这是到目前为止我的代码
  • Rust 如何在运行时存储类型?

    A u32占用4字节内存 String在堆栈上占用 3 个指针大小的整数 用于位置 大小和保留空间 再加上堆上的一些数量 对我来说 这意味着 Rust 不知道当代码执行时 什么类型存储在特定位置 因为这些知识需要更多内存 但与此同时 它是否
  • 一类 SVM libSVM

    假设我的特征向量是 x1 x2 xn 谁能给我一个使用 libSVM 训练一类 SVM 的代码 我应该如何使用交叉验证来学习参数 这可能对你有帮助 label ones Number Of your training instances 1
  • 使用 JavaScript 将对象的特定属性合并在一起

    所以我有一个像这样的对象数组 name Joe Smith job Custodian age 35 id 3421 name George Henderson job CEO age 43 id 5098 name Joe Smith j
  • IE中Json响应下载(7~10)

    我正在尝试上传文件并返回有关文件属性 名称 大小等 的 json 响应 除了 IE 之外 它在所有浏览器中都可以正常工作 IE 尝试将 JSON 作为文件下载 我有 IE10 并通过从调试器更改浏览器模式和文档模式在 IE7 到 10 上进
  • 在 Windows 上使用 Perl,如何确保在 chdir 之后获得正确大小写的路径?

    考虑以下代码 print cwd n str source note the lower case s chdir str print cwd n 如果我当前的目录是c parentdir Source 注意大写 S 其输出将是 c par