问题
通常,不考虑任何特定平台,PerlCwd::cwd
和in之间有什么区别?Cwd::getcwd
为什么 Perl 两者都有?预期用途是什么,我应该在哪些场景中使用哪一个?(示例用例将不胜感激。)这有关系吗?(假设我不混合它们。)任何一个的选择是否会以任何方式影响便携性?哪一个在模块中更常用?
即使我解释手册是说除了极端情况cwd
是`pwd`
并且getcwd
只是调用getcwd
from unistd.h
,实际区别是什么?无论如何,这只适用于 POSIX 系统。
我总是可以阅读实现,但这并没有告诉我这些函数的含义。实现细节可能会改变,没有那么定义的意思。(否则会发生重大变化,这是一件严肃的事情。)
说明书是怎么说的
引用 Perl 的Cwd 模块手册页:
这些函数中的每一个都在没有参数的情况下调用,并返回当前工作目录的绝对路径。
获取cwd
my $cwd = getcwd();
返回当前工作目录。
公开 POSIX 函数 getcwd(3) 或在它不可用时重新实现它。
cwd
my $cwd = cwd();
cwd() 是当前架构最自然的形式。对于大多数系统,它与 `pwd` 相同(但没有尾随行终止符)。
在注释部分:
- 实际上,在 Mac OS 上
getcwd()
,fastgetcwd()
和fastcwd()
函数都是函数的别名cwd()
,在 Mac OS 上,函数称为 `pwd`。同样,该abs_path()
函数是fast_abs_path()
好的,我知道在 Mac OS 1上 和 之间没有区别getcwd()
,cwd()
因为两者实际上都归结为`pwd`
. 但是在其他平台上呢?(我对 Debian Linux 特别感兴趣。)
1经典 Mac OS,而不是 OS X。$^O
值分别是 Mac OSMacOS
和darwin
OS X。谢谢@tobyink和@ikegami。
还有一个小问题:如何避免对其他功能非常相似的模块提出类似的问题?除了挖掘实现之外,是否有一种发现差异的通用方法?(目前,我认为如果文档不清楚预期用途和差异,我必须请教更有经验的人或自己阅读实现。)