在Perl源代码中,在哪里可以找到排序例程的实现?

在Perl源代码中,在哪里可以找到排序例程的实现?,perl,Perl,我想通过修改实际的排序例程来试验Perl。 我确实对源代码进行了grep,试图找到一些名称模式提到排序的文件,但没有找到任何相关的文件 你们谁能告诉我排序实现位于哪个文件中吗?我去了 第一个搜索结果是sort.pm,这似乎是一个很好的提示。由于该模块没有定义搜索本身,因此我在那里查找了一些有助于我的关键字。我选择了\u快速排序和\u合并排序 没有显示任何相关结果,所以我尝试了快速排序 这给了我pp_sort.c,你就这样做了。差不多有2000行都是排序。我去了 第一个搜索结果是sort.pm,这

我想通过修改实际的排序例程来试验Perl。 我确实对源代码进行了
grep
,试图找到一些名称模式提到
排序的文件,但没有找到任何相关的文件

你们谁能告诉我排序实现位于哪个文件中吗?

我去了

第一个搜索结果是
sort.pm
,这似乎是一个很好的提示。由于该模块没有定义搜索本身,因此我在那里查找了一些有助于我的关键字。我选择了
\u快速排序
\u合并排序

没有显示任何相关结果,所以我尝试了快速排序

这给了我
pp_sort.c
,你就这样做了。差不多有2000行都是排序。我去了

第一个搜索结果是
sort.pm
,这似乎是一个很好的提示。由于该模块没有定义搜索本身,因此我在那里查找了一些有助于我的关键字。我选择了
\u快速排序
\u合并排序

没有显示任何相关结果,所以我尝试了快速排序


这给了我
pp_sort.c
,你就这样做了。几乎有2000行充满了排序。

如果您计划修改Perl的内部结构,那么您需要了解Perl如何在内部工作。首先阅读
perlhack
手册页,然后按照它的指示进入更多(相当长的!)手册页。

如果您计划修改Perl的内部结构,您需要了解Perl如何在内部工作。首先阅读
perlhack
手册页,然后按照它的指针指向更多的(相当长的!)手册页。

您可以使用B::简明:

$ perl -MO=Concise -e'sort'
5  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
4     <@> sort vK ->5
3        <0> pushmark s ->4
-e syntax OK
因此:

在本例中,
排序
操作码实际上存在于它自己的文件中:


*有几个例外。例如,
操作码实际上是在
Perl_do_kv
中实现的,如操作码h中的这一行所示:

#define Perl_pp_keys Perl_do_kv

如果找不到给定操作码的
pp\u foo
,请检查opcode.h.

您可以使用B::简明:

$ perl -MO=Concise -e'sort'
5  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
4     <@> sort vK ->5
3        <0> pushmark s ->4
-e syntax OK
因此:

在本例中,
排序
操作码实际上存在于它自己的文件中:


*有几个例外。例如,
操作码实际上是在
Perl_do_kv
中实现的,如操作码h中的这一行所示:

#define Perl_pp_keys Perl_do_kv

如果您找不到给定操作码的
pp\u foo
,请检查opcode.h.

谢谢!我来看看。谢谢!我会看一看。教一个男人如何分类,他们会自己分类——杜撰的教一个男人如何分类,他们会自己分类——杜撰的