为了学习的目的,我正在建设的想法
事件驱动程序在Perl和注意到,它可能是很好的如果一个
被注册为事件处理程序的子例程可以在失败时,
只是安排另一个调用自己以后的时间。到目前为止,我有
想出这样的东西:
my $cb;
my $try = 3;
$cb = sub {
    my $rc = do_stuff();
    if (!$rc && --$try) {
        schedule_event($cb,10); # schedule $cb to be called in 10 seconds
    } else {
        do_other_stuff;
    }
};
schedule_event($cb,0); # schedule initial call to $cb to be performed ASAP

有一种方法,代码里面的sub可以访问coderef
sub所以我可以不使用额外的变量?我想
调度这样的初始调用。

schedule_event( sub { ... },0);

我首先想到使用caller(0)[3],但这只是给了我一个
函数名,(__ANON__如果没有名称),而不是代码引用
其具有附接到其上的垫。

解决方法

我认为 Sub::Current会解决你的问题。

在Perl中,一个子程序如何获得指向自身的代码?的更多相关文章

  1. Swift快速入门五集合

    相关文章Swift快速入门(一)第一个Swift程序Swift快速入门(二)基本数据类型Swift快速入门(三)运算符Swift快速入门(四)流程控制前言Swift提供了数组和字典两种集合类型来存储数据,Swift的数组用来存储顺序相同类型相同的类型,字典则采用kay-value的形式存储数据。修改字典字典提供了updataValue()方法来修改字典的value值,该方法会返回一个Sting?

  2. 13.9 Swift必须构造方法

    /**必须构造器比较新鲜的概念,之所以说是比较新的概念呢,是因为这个是早期的版本中没有这样一个概念啊?构造方法所属的类的后续子类必须也得实现这个构造方法。

  3. 数组 – 封闭平面嵌套对象?

    我开始学习闭包,并希望在我正在开发的项目中实现它们,我想要一些帮助.我有一个类定义如下:我想使用闭包或更高级的函数来展平[MyObject]并将所有MyObject和subOjects连接成一个数组.我尝试使用[MyObject].flatMap(),但此操作不返回嵌套的子对象.展平递归类结构的一种方法是使用递归函数.这是我们想要展平的课程:以下是演示如何完成此操作的函数:这种方法的核心是recursiveFlat本地函数.它将嵌套对象的内容附加到结果中,然后有条件地为每个元素调用自身以添加其内容.

  4. 在Android上调试时,RxJava缓存线程中的InterruptedException

    有时当我调试我的应用程序时,我在RxCachedThreadScheduler-1中遇到InterruptedException.这是跟踪:我有一个自定义视图,我在其中订阅我的observable,如下所示:这是可观察的:其中eventSubject是一个简单的PublishSubject.我使用RxAndroid1.1.0和RxJava1.1.0.有谁知道为什么会这样?解决方法我不确定,为什么会

  5. android – PopupWindow z排序

    我使用PopupWindow播放菜单,它与EditText重叠.它工作正常,除了我的PopupWindow与EditTextIME系统中的某些项目重叠.我的问题是:如何强制我的PopupWindow的z顺序,使它出现在这些装饰上方?

  6. JavaScript sub方法入门实例(把字符串显示为下标)

    这篇文章主要介绍了JavaScript sub方法入门实例,sub方法用于把字符串显示为下标,需要的朋友可以参考下

  7. Dapr+NestJs编写Pub及Sub装饰器实战示例

    这篇文章主要为大家介绍了Dapr+NestJs编写Pub及Sub装饰器的实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  8. 简介JavaScript中的sub()方法的使用

    这篇文章主要介绍了JavaScript中的sub()方法的使用,是JS入门学习中的基础知识,需要的朋友可以参考下

  9. PHP与Perl之间知识点区别整理

    在本篇文章里小编给大家分享了关于PHP与Perl的却别以及相关知识点整理,有兴趣的朋友们学习下。

  10. 尝试在Windows 7上安装MinGW和Tk for Perl

    我一直试图让这个工作几个星期了.我可以通过.exe安装MinGW,但不管我做什么我似乎无法获得支持或ppm安装MinGW以这样的方式工作,以便我的编译Tk-804.029将正确使用’make’命令.(安装Perl模块:>perlMakeFile.PL–工作正常>make或dmake–我无法让MinGW正确关联Make或DMake(在MinGW/bin目录中找不到正确的.exe…我尝试过使用-32bitmingw32-make.exe但是这会导致与编译的头文件有关的错误.)ppm安装MinGW也不行,似乎觉

随机推荐

  1. 数组 – Perl中有什么神奇的数组?

    在Perldocumentationforreverse中,我发现:“请注意,将数组反转到自身(如@a=reverse@a)将尽可能保留不存在的元素;即对于非魔法数组或具有EXISTS和DELETE方法的绑定数组.什么属性区分神奇和非魔法阵列?解决方法一个神奇的阵列是一个执行它的操作不仅仅是改变内容.只有内置的魔术阵列是@ISA,而且这是非常不明显的.正如句子所暗示的,魔术阵列主要是一个绑定的阵列

  2. perl – 使用“isa”方法的最佳方式?

    什么是“最好的”使用方式“isa()”可靠?解决方法Scalar::Util实现明确更好.它避免了eval{}的开销,它总是导致设置一个附加变量.Scalar::Util实现更容易阅读.如果eval也失败了,我相信发生的是你在树之前向后走到eval之前的状态–这是如何实现复位状态.这带来了额外的故障开销.基准根本不是一个对象对象传递isa检查对象出现故障现象检查测试代码:我使用这是为i486-linux-gnu-thread-multi建立的perl,v5.10.1(*),以及Scalar::Util,1

  3. 在CORE :: GLOBAL中哪些Perl内置函数不能被覆盖?

    解决方法toke.c中任何值为负的值都可以被覆盖;所有其他人可能不会.你可以看源码here.例如,我们来看看第10,396行的waitpid:由于waitpid为负数,因此可能会被覆盖.grep怎么样?这是积极的,所以不能被覆盖.这意味着以下关键字不能被覆盖:chop,defined,delete,do,dump,each,else,elsif,eval,exists,for,foreach,format,glob,goto,grep,if,keys,last,local,m,map,my,next,no

  4. 如何在Perl中打印由换行符分隔的列表元素?

    什么是最简单的打印所有列表的元素以Perl中的换行符分隔的元素?解决方法在Perl5.10中:其他方式:或:或者怎么样?

  5. 使用Perl如何获取文件大小(以兆字节为单位)?

    我想以磁盘的形式获取磁盘上的文件大小.使用-s运算符给出了以字节为单位的大小,但是我将假设,然后将其除以魔术数字是一个坏主意:我应该使用只读变量来定义1024,还是有一种编程方式来获取一千字节的字节数?

  6. perl – 如何测试/分类CPAN模块的utf8正确性

    例如:File::Slurp,如果你将读取该文件您将根据命令行开关获得不同的结果,并且perl-CSDA将无法正常工作.伤心.(是的,我知道比Encode::decode(“utf8”,read_file($file,binmode=>’:raw’));将帮助,但是SAD.我的问题:>在这里任何首选方式,如何测试/分类什么CPAN模块是utf8安全/准备/正确?>这里是像Perl::Criticforutf8这样的东西–什么将检查模块源可能的utf8不正确?总结以上是DEVMAX为你收集整理的perl–如

  7. 如何删除Perl字符串中的空格?

    如果我声明一个值为’3’的变量$myString.是否有任何功能来删除返回值的空格.有点像SomeFun然后返回’3′.输出:你可以注意到’vid’=>‘0’,上面的代码从theanswer.我正在研究它.总结以上是DEVMAX为你收集整理的如何删除Perl字符串中的空格?如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  8. 如何在mod_perl2下运行Devel :: Cover?

    Unfortunately,Devel::Coverdoesnotyetworkwiththreads.它也不适用于prefork.在startup.pl中使用,Devel::Cover问题perl5.8.9,Apache2.2.13.我的操作系统是FreeBSD,如果重要.同样的问题是reportedforwin32.更新:PerlTrace全部输出解决方法邪恶之源似乎是Apache::DBI.

  9. 如何使用Perl中的C类?

    我有一套用C写的课.从Perl脚本中调用它们的最佳方法是什么?

  10. perl – 在Emacs中以双模式更好的缩进

    我正在使用Emacs来修改Perl和Verilog交织的代码.我正在使用two-mode-mode在两者之间切换,这样可以预期.问题是perl代码与//一行一行地表示;如下图所示:而双模式则认识到它是Perl,它是逐行的,所以缩进等在线上无意义.我想做的是使Perl代码像往常一样格式化,但忽略//;字符.有什么想法吗?我刚刚开始偷看模式文件,它们是可以理解的复杂的,所以任何提示都不会感激!

返回
顶部