如何在Perl中执行区分大小写的重命名或移动操作?

Der*_*esi 3 perl case-sensitive

我有一个关于在perl中重命名目录的问题(caveat:需要区分大小写的重命名)。

我有一个名为Demo的目录。我有一个重命名目录的脚本,但是我需要区分大小写。

因此,演示与演示不同。

例如,我有一个名为Demo的目录。我想将其重命名为CLIENT1。我的脚本叫做perlDirRename arg1 arg2。如果我提供参数Demo CLIENT1,我希望代码通过,如果我提供参数demo CLIENT1,我将引发错误

总结一下:

./perlDirRename Demo CLIENT1 (通过)

./perlDirRename demo CLIENT1 (失败)

这是一个代码片段:

my $from_dir = $ARGV[0];
my $to_dir = $ARGV[1];

if ($from_dir eq $to_dir) {
  print("Arguments cannot be equal!\n");
  exit(1);
}


move("$dirHome/$from_dir", "$dirHome/$to_dir") or die "Move failed: $!";
Run Code Online (Sandbox Code Playgroud)

如何在Perl中执行区分大小写的重命名或移动操作?

mel*_*ene 5

需要区分大小写的重命名

哪有这回事。

因此,演示与演示不同。

这完全取决于您使用的文件系统。在不区分大小写的文件系统上,例如Mac OS(APFS)和Windows(NTFS)上常用的文件系统,Demo实际上是与相同的文件demo。在区分大小写的文件系统上,Demodemo有所不同。

这是有问题的文件系统的属性,而不是任何特定的操作(例如rename)。

如果即使在不区分大小写的文件系统上,如果传入的名称不是规范形式(即与文件名显示的大小写不匹配),如果您希望程序产生错误,则必须自己获取规范名称并将其与进行比较eq。详细信息取决于您的操作系统。