考虑下面的代码:
print cwd . "n"; $str= "../source"; # note the lower case 's' chdir($str); print cwd . "n";
如果我的当前目录是c:parentdirsource (注意大写'S'),则输出将是:
C:/ parentdir /源
C:/ parentdir /源
这导致我的一个子例程中的问题,关心文件夹名称的正确大小写。 $ str传入我的子程序,所以我不能提前知道它是否有正确的情况。 如何确定匹配$str的path的正确名称?
更多细节在这里:
如何在Windows上的Node.js中获取文件的大小写确切的path?
C ++头文件区分大小写
Apache mod_speling不区分大小写的URL问题
如何使“git分支”尊重Linux上的“core.ignorecase”标志?
如何在MysqL中强制区分大小写的表名和列名?
我意识到../source是一个病态的例子,但是它可以说明这个问题。 即使$str正在请求一个不是当前文件夹的文件夹,也会发生这种情况。
我已经尝试了很多选项,包括rel2abs , $str的全局search等等,但它们似乎都返回“ source ”而不是“ Source ”。
我可以在所有目录中search$str/.. ,将它们全部转换为绝对path,并将它们与$str的绝对path版本进行比较,但这似乎是一种破解。 我希望有更优雅的东西。
让MysqL区分大小写?
Windows使用哪些语言环境来检查用户名?
Node.js Express静态资产的区分大小写
在Windows 7上启用区分大小写
Ubuntu中的文件名是否区分大小写?
#!/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个温度 t 来源
C: DOCUME〜1 ... LOCALS〜1个 TEMP 吨源
C: Documents and Settings ... Local Settings Temp t Source
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。