考虑以下代码:
print cwd . "\n";
$str= "../source"; # note the lower case 's'
chdir($str);
print cwd . "\n";
如果我的当前目录是c:\parentdir\Source
(注意大写“S”),则输出将是:
c:/parentdir/源 c:/父目录/源
这会导致我的一个子程序出现问题,该子程序关心文件夹名称的正确大小写。$str 被传递给我的子程序,所以我无法提前知道它是否有正确的大小写。如何确定匹配路径的大小写正确名称$str
?
更多细节在这里:
- 我意识到这
../source
是一个病态的例子,但它可以说明问题。即使$str
正在请求当前文件夹以外的文件夹,也会发生这种情况。 - 我尝试了许多选项,包括
rel2abs
在 上进行全局搜索$str
等,但它们似乎都返回“source
”而不是“Source
”。 - 我可以搜索
$str/..
所有目录,将它们全部转换为绝对路径并将它们与绝对路径版本进行比较$str
,但这似乎是一个 hack。我希望有更优雅的东西。