是否等同于Ruby、Python的Perl Modulino?

6tqwzwtp  于 2022-11-15  发布在  Perl
关注(0)|答案(3)|浏览(126)

我知道Perl有一种称为modulino的设计模式,其中库模块文件既可以充当库,也可以充当脚本。
我认为这个设计模式对我非常有用;我正在编写一些非常短的worker,但也需要一个脚本来运行它们。我认为从同一个地方运行这些worker会很方便。

zpf6vheq

zpf6vheq1#

Python有__name__

class MyClass(object):
    pass

if __name__ == '__main__':
    print("This will only run if you run the script explicitly, not import it")

如果运行python myscript.py,则print函数将运行。如果从myscript导入MyClass,则print函数不会运行。

lxkprmvk

lxkprmvk2#

这是Ruby版本:

if __FILE__ == $PROGRAM_NAME #equivalent: if __FILE__ == $0
  puts "This is the main file running, it is not being required."
end
gr8qqesn

gr8qqesn3#

Perl 6内置了此功能。您可以定义一个名为MAIN的子例程,如果您将文件用作脚本,该子例程将执行:

sub MAIN { ... }

MAIN的签名告诉Perl 6如何解析命令行参数。你可以有多个subs,Perl 6将使用签名匹配的那个。下面是来自Synopsis 6的例子:

multi MAIN (Int $i) {...}   # foo 1
multi MAIN (Rat $i) {...}   # foo 1/2
multi MAIN (Num $i) {...}   # foo 1e6
multi MAIN ($i) {...}       # foo bar

相关问题