macos – 我希望-e能够在OS X上区分大小写.是否可能?
我正在开发一个使用-e标志的脚本,如
unless (-e $fileName) { ... } 这在OS X上工作正常.或者说,它无法正常工作.我希望它区分大小写.该脚本也在Linux机器上运行,-e检查失败 – 正确! – 因为区分大小写. 我尝试使用open< FILEHANDLE,'$fileName')执行备用路径,但似乎这也是不区分大小写的. 编辑:感谢下面回答的所有人.我知道HFS不区分大小写,但我认为我可以以某种方式“强迫”它.我最终通过执行以下操作来强制检查: opendir my($dh),$dirName or die "Couldn't open dir '$dirName'"; my @refFiles = readdir $dh; closedir $dh; foreach $refFile (@refFiles) { if ($refFile eq $refFileName) { $found = 1; } } 着名的口头禅:“它不漂亮,但它有效.” 解决方法
缺乏区分大小写是由于您使用的文件系统(HFS),而不是Perl函数-e和open,以及基础stat(2)和open(2)系统调用.
默认情况下,HFS文件系统不区分大小写;但是,您可以选择在初始化新文件系统时创建区分大小写的HFS卷(使用“磁盘工具”,“diskutil”或“* newfs_hfs *”等):只需选择“区分大小写”版本. 我已经看到(从一个区分大小写的)启动卷运行时出现(写得不好)程序故障的报告,因此我建议您使用单独的卷来处理区分大小写的工作.例如,使用“Mac OS Extended(区分大小写,日志)”文件系统创建磁盘映像(即“稀疏磁盘包映像”),并在需要执行区分大小写的工作时挂载它(例如open~ / case -sensitive.sparsebundle,然后cd / Volumes / Case-sensitive / foobar从那里做你的区分大小写的工作). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |