我想在Windows 10(WSL)下的Linux环境中使用Perl脚本.我启用了WSL,安装了编译器(gcc和make),执行了sudo apt-get install build-essential. Perl正在工作,我可以运行简单的脚本.我尝试安装perl模块时出现问题.例如,我试图通过运行perl -MCPAN -e’install“LWP”来添加LWP.它提供了大量错误/警告消息,从警告开始:套件中缺少以下文件:完整的输出太大了,不能粘贴在这里,所以我必须把它放在别处:http://pastebin.com/RRRedwbG.简而言之,无论包装,所有的.pm和.t文件都被认为是丢失的.
最佳答案
在unix文件系统上,是一个目录.是一个自己的硬链接,目录的..是其父目录的硬链接.因此,当您统计目录时,stat返回的链接计数将至少为1(.)$(.)$num_sub_dirs(..).
$ls -ld .
drwx------ 5 ikegami ikegami 46 Dec 16 12:03 . # 5 = Could have up to three subdirs
$ls -l .
total 0
drwx------ 2 ikegami ikegami 10 Dec 16 12:03 a # 2 = No subdirs
drwx------ 3 ikegami ikegami 24 Dec 16 12:03 b # 3 = Could have up to one subdir
drwx------ 2 ikegami ikegami 10 Dec 16 12:03 c # 2 = No subdirs
File :: Find依赖于该信息以在可能的情况下优化自身.
Perl和File :: Find知道FAT和NTFS文件系统不是这种情况,因此在Windows上禁用了优化.但是,VSL看起来像Linux系统,因此他们错误地认为他们正在处理unix文件系统.
perl -MConfig -e'CORE::say $INC{"Config.pm"}'
更改
dont_use_nlink => undef
至
dont_use_nlink => 1
您可以使用验证更改
$perl -V:dont_use_nlink
dont_use_nlink='1';
这个答案基于this bug report.