質問
一般的に、特定のプラットフォームに関係なく、Perl でのCwd::cwd
との違いは何ですか? Cwd::getcwd
Perl に両方があるのはなぜですか? 使用目的は何ですか?どのシナリオでどれを使用すればよいですか? (ユースケースの例をいただければ幸いです。)それは重要ですか?(私はそれらを混ぜないと仮定します。)どちらかを選択すると、移植性に何らかの影響がありますか? モジュールでより一般的に使用されるのはどれですか?
マニュアルを解釈しても、まれなケースを除いて、から呼び出すだけでcwd
ある`pwd`
と言っていますが、実際の違いは何ですか? とにかく、これはPOSIXシステムでのみ機能します。getcwd
getcwd
unistd.h
私はいつでも実装を読むことができますが、それらの関数の意味については何も教えてくれません。実装の詳細は変更される可能性があり、定義された意味ではありません。(そうしないと重大な問題である重大な変更が発生します。)
マニュアルには何と書かれていますか
PerlのCwdモジュールのマンページを引用:
これらの各関数は引数なしで呼び出され、現在の作業ディレクトリの絶対パスを返します。
getcwd
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()
OK、Mac OS 1getcwd()
では と の間に違いはないことはわかっています。cwd()
どちらも実際には`pwd`
. しかし、他のプラットフォームではどうでしょうか? (特に Debian Linux に興味があります。 )
1 OS X ではなく、従来の Mac OS。Mac OS と OS Xの$^O
値はそれぞれMacOS
とdarwin
です。@tobyinkと@ikegamiに感謝します。
そして、ちょっとしたメタ質問: 非常によく似た機能を持つ他のモジュールに対して同様の質問をしないようにするにはどうすればよいですか? 実装を掘り下げる以外に、違いを発見する普遍的な方法はありますか? (現在、ドキュメントの使用目的や相違点が明確でない場合は、経験豊富な人に尋ねるか、自分で実装を読む必要があると思います。 )