Perl   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了尝试了解Perl排序函数的结果大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试排序一个函数的结果,如排序func();被烧了,因为没有回来.我猜Perl认为函数调用是一个排序例程,后面没有数据.

Perldoc表示第二个参数可以是子程序名称或代码块.我看到func()作为一个调用,而不是一个名字.我根本不认为这是DWIMMY.

为了进一步探索如何运作,我写道:

use Strict;
use warnings;

sub func {
    return qw/ c b a /;
}

my @a;

@a = sort func();
print "1. sort func():    @a\n"; 

@a = sort &func;
print "2. sort &func:     @a\n"; 

@a = sort +func();
print "3. sort +func():   @a\n"; 

@a = sort (func());
print "4. sort (func()):  @a\n"; 

@a = sort func;
print "5. sort func:      @a\n";

输出,没有生成警告:

1. sort func():
2. sort &func:     a b c
3. sort +func():   a b c
4. sort (func()):  a b c
5. sort func:      func

数字1是我的行为 – 没有输出.

我感到惊讶的是,2作品,而1没有.我以为他们是等同的

我明白3和4,我用4来解决我的问题.

我真的很困惑5,特别是没有警告.

有人可以解释1& 2,为什么5输出函数的名称?

解决方法

将func()分析为sort func(),即使用例程功能对空列表[()]进行排序.

并且#5解析为sort(“func”),排序包含(bareword)字符串func的列表.也许这里应该有一个警告,但没有.

分离输出:

$perl -MO=Deparse -e '@a1 = sort func();' -e '@a2=sort &func;' \
    -e '@a3=sort +func();' -e '@a4=sort (func());' -e '@a5=sort func;'
@a1 = (sort func ());
@a2 = sort(&func);
@a3 = sort(func());
@a4 = sort(func());
@a5 = sort('func');
-e syntax OK

大佬总结

以上是大佬教程为你收集整理的尝试了解Perl排序函数的结果全部内容,希望文章能够帮你解决尝试了解Perl排序函数的结果所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。