perl – 如果你不放1会怎样?在包裹的最后?
如果你不放1,会发生什么?在包裹的最后?例如,如果我删除1;从以下脚本,代码仍然运行:
#!/usr/bin/perl package Foo; print "Begin and Block Demon"; BEGIN { print "This is BEGIN Blockn" } END { print "This is END Blockn" } 1; 是1;是否必须创建包?我看到this question,但它没有解释如果1;省略. 解决方法
这有点棘手.如果包装将通过使用或要求加载,则只需要它.
从require起
use归结为require,因此无论何时使用模块,返回的最后一个语句必须返回true,否则编译失败.确保这一点的一个简单方法是放1;在末尾.如果你从不使用(或要求)那个包,那么你不必拥有1(真). 通过use引入程序的文件中的代码实际运行,并且必须按照require的要求返回true.如果以另一种方式读入文件,则没有“返回”的概念. 如果它作为可执行文件运行,那么再次没有真正返回的要求,因为不涉及require.但是,我们通常编写包以便使用它们,而不是将它们作为程序运行.所以实际上应该总是有1;在末尾. perlmod也需要阅读. 这是一个简单的例子.这个 文件Mod.pm package Mod; # print "hellon"; # works with this line uncommented 文件script.pl use Mod; 当由perl script.pl打印时 Mod.pm did not return a true value at main.pl line 1. BEGIN failed--compilation aborted at main.pl line 1. 使用包时,它必须返回一个真值.如果最后一次返回来自一个恰好返回true的语句,就像注释掉的打印一样,那么一切都很好. 但是我们可以运行perl Mod.pm而不管它返回什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |