Perl如何能将文件名大小写改成与实际一致(windows系统下)

rmryt 2010-07-21 10:34:09
最近刚学perl,试着写几个脚本工作中可以用上。使用windows系统和clearcase版本管理软件。由于windows不区分文件名大小写,而clearcase被配置成对大小写敏感,因为需要先校正文件路径。

比如有字符串 $filename = D:\FOLDER\AAA.txt 而实际文件是D:\folder\aaa.txt ,如果用-e检测$filename 结果为true,而调用clearcase命令则会失败。请问有什么办法纠正$filename的值,使其与实际路径大小写一致。能不引入其它包最好。
...全文
271 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Perl里面其实有一个函数是Upcase()可以用来转换为大写的,转为小写的也有相关函数的。。。
  • 打赏
  • 举报
回复
楼主,你是在用ClearCase啊,我也在用,咱们是同行啊,呵呵。。。

希望多多交流!andy9008@126.com
  • 打赏
  • 举报
回复
对于Windows中的大小写问题,你提到过你在用批处理,那就用批处理来处理吧,像是目录的切换用批处理或DOS命令来切换,即切换到CC要操作的目录,这样,CC就工作在当前目录了。总之,不要让CC去处理含有大小写情况的目录或代码就OK了。。。。
fibbery 2010-07-23
  • 打赏
  • 举报
回复
不太明白楼主遇到了什么问题。如果说系统保存的文件名本身就是:Example.txt,在程序中你非要使用EXAMPLE.TXT吗?Perl从系统中读到的肯定就是Example.txt,不知道你遇到了什么问题。
fibbery 2010-07-23
  • 打赏
  • 举报
回复
虽然Windows不区分大小写,但是,你从目录中读到的文件名,应该跟你在系统中看到的一样。
E:\temp\Perl>perl
opendir($dh,".");
@a=readdir($dh);
print("@a\n");
^D
. .. A a.csv abc.log find.pl getnodesinfo.pl input.txt test.pl

E:\temp\Perl>dir /w
驱动器 E 中的卷是 Data
卷的序列号是 4078-9481

E:\temp\Perl 的目录

[.] [..] [A] a.csv
abc.log find.pl getnodesinfo.pl input.txt
test.pl
赵4老师 2010-07-23
  • 打赏
  • 举报
回复
`dir /b /s /a-d D:\FOLDER\AAA.txt`
iambic 2010-07-21
  • 打赏
  • 举报
回复
性能这个问题试过才知道。一般问题不大。
不过我还是建议你把ClearCase配置成在Windows下对路径不区分大小写。这才是正常的做法。
rmryt 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iambic 的回复:]
试下把父目录下的文件列出来,找到忽略大小比较的后文件名相等的那个。
[/Quote]
谢谢。这种方法可行,但是我现在要做批处理,也就是说一个列表中有很多个文件需要验证,而这些文件都位于不同的文件夹,况且有的文件夹包含的目录和文件也很多。如果每处理一个文件就要将其所在的文件夹读一遍来一一比较,耗费似乎有点大了。。
请问还有没有别的更好的方法?
iambic 2010-07-21
  • 打赏
  • 举报
回复
试下把父目录下的文件列出来,找到忽略大小比较的后文件名相等的那个。
rmryt 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iambic 的回复:]
性能这个问题试过才知道。一般问题不大。
不过我还是建议你把ClearCase配置成在Windows下对路径不区分大小写。这才是正常的做法。
[/Quote]

我配置不了呢,只是用客户端而已。。。不知能否通过一个文件句柄获取文件完整名称。。

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧