加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

什么是有效的Perl模块返回值?

发布时间:2020-12-15 21:12:47 所属栏目:大数据 来源:网络整理
导读:Perl的常见做法当然是以1为单位结束模块;所以可以检查要求的呼叫是否成功.有没有理由返回值不可能是另一个真正的价值?在我的测试中,它没有看到任何问题,但是我想知道是否有任何人遇到任何问题(例如其他模块或编译指示或任何希望值为1而不是真的值) . 编辑:
Perl的常见做法当然是以1为单位结束模块;所以可以检查要求的呼叫是否成功.有没有理由返回值不可能是另一个真正的价值?在我的测试中,它没有看到任何问题,但是我想知道是否有任何人遇到任何问题(例如其他模块或编译指示或任何希望值为1而不是真的值) .

编辑:由流行的意见,由于它只会工作一次(好提示),代码示例已经消失.似乎一致的是,它可以安全地返回任何真正的价值,但从来没有依赖于该值调用代码,因为require将在第一次加载后返回1

解决方法

我一直把愚蠢的东西放在模块的最后一段时间.没有伤害和一点复活节彩蛋. uny2k以“是的,这段代码是个笑话”结尾. Class::Fields充满了他们.

更进一步,有时当一个函数被记录为返回true和false时,我将返回除1之外的值.这是为了惩罚写入foo()== 1的人,当他们的意思是如果foo().这是在同一时期我写的使用常数TRUE => 1 == 1;使用常数FALSE => !真正;

我看到生产代码中使用的模块的返回值.我不记得为什么.开发人员的逻辑是…折磨.我相信这是不希望只写一行而不是两行的.我不记得为什么他不出口它.

这是使用%_传递参数的同一开发人员(* _符号在包中是全局的),并在map语句内部写入150行地图语句.

除了混淆之外,使用返回值的危险是它只能工作一次.

$cat Foo.pm
package Foo;

return "Basset hounds got long ears";

$cat test.plx
#!/usr/bin/perl -w

print require Foo,"n";
print require Foo,"n";

$perl -I. test.plx
Basset hounds got long ears
1

第一次调用要求评估Foo.pm并返回返回值.第二个调用看起来已经在%INC中,并且返回true.你甚至不能确定你是第一件需要代码的东西.你可以用“Foo.pm”来解决这个问题,但现在你正在重新加载模块,每次都会有关于重新定义的例程,性能问题以及可能重新初始化全局变量的警告.这不值得.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读