为什么使用 Perl 解释器的单个破折号参数安装 cpanminus?

Why is cpanminus installed using a single dash argument to the Perl interpreter?

在查看 Cpanminus 时,我看到一种安装方法如下:

curl -L https://cpanmin.us | perl - App::cpanminus

第一部分从 URL 下载一个可以被 Perl 解释器解释的文件,然后将它通过管道传递给 Perl。不过,我无法弄清楚单个破折号参数在做什么。

就此而言,我不完全确定第二个参数在做什么(为什么 Cpanminus 需要知道它自己的名字?),但至少它看起来不那么神秘。

传递给perl的第一个非选项参数是要执行的文件的名称。 - 表示标准输入。因此,命令 perl 执行 curl -L https://cpanmin.us 的输出,将 App::cpanminus 作为参数传递。

由于 curl -L https://cpanmin.us returns 是 cpanm 的独立版本,整个命令有效地下载 cpanm 并使用它来安装 cpanm(a App::cpanminus)的一部分。

换句话说,

curl -L https://cpanmin.us | perl - App::cpanminus

大致相同
curl -L https://cpanmin.us >self_contained_cpanm
perl self_contained_cpanm App::cpanminus