这种方法在做什么?
我根本不理解它的目的,而perldoc中的解释并没有帮助我。
现在我需要更新使用此方法的脚本,因此最好了解它正在做什么。
是否有一个简单的教程来理解该方法?
谢谢
答案 0 :(得分:4)
对canonpath
的调用会返回与传递的参数等效的规范路径。这意味着它将
将所有路径分隔符更改为平台常规路径分隔符
将多个路径分隔符压缩为单个
删除尾随路径分隔符
删除任何多余的.
和..
路径元素
使用类似
的Windows路径可以最好地证明这一点C:/a/b/../c///d/.//
此Perl代码
use strict;
use warnings;
use feature 'say';
use File::Spec;
say File::Spec->canonpath('C:/a/b/../c///d/.//');
C:\a\c\d
很遗憾,我无法解释您展示的代码
my $dir = File::Spec->curdir();
my $path = File::Spec->canonpath($dir);
因为curdir
方法在Windows和Linux系统上返回.
,canonpath
保持不变。如果您想要发现当前目录的绝对路径,那么您将使用
my $path = File::Spec->rel2abs(File::Spec->curdir());
然而,使用像此{/ 3>这样的Cwd
模块可以做得更好
use Cwd ();
my $path = Cwd::cwd;
答案 1 :(得分:1)
curdir
返回当前工作目录的符号。 canonpath
在不同的操作系统上执行不同的操作,请查看示例File::Spec::Unix或
File::Spec::Win32