相当于用于Ruby、Python的Perl Modulino?

相当于用于Ruby、Python的Perl Modulino?,python,ruby,perl,modulino,Python,Ruby,Perl,Modulino,我知道Perl有一种称为modulino的设计模式,在这种模式中,库模块文件可以充当库和脚本。在Ruby/Python中是否有与此等价的东西 我认为这种设计模式对我非常有用;我正在编写相当短的worker,但也需要一个脚本来运行它们。我想把这些都放在同一个地方比较方便 谢谢大家! Python有\uuuuu name\uuuu: class MyClass(object): pass if __name__ == '__main__': print("This will onl

我知道Perl有一种称为modulino的设计模式,在这种模式中,库模块文件可以充当库和脚本。在Ruby/Python中是否有与此等价的东西

我认为这种设计模式对我非常有用;我正在编写相当短的worker,但也需要一个脚本来运行它们。我想把这些都放在同一个地方比较方便


谢谢大家!

Python有
\uuuuu name\uuuu

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
,则
打印将不会。

这是Ruby版本:

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

Perl6内置了这个特性。定义名为
MAIN
的子例程,如果将文件用作脚本,则该子例程将执行:

 sub MAIN { ... }
MAIN
的签名告诉Perl6如何解析命令行参数。您可以使用multi-sub,Perl 6将使用签名匹配的sub。以下是来自以下方面的示例:


谢谢,这正是我想要的。现在要找到Ruby的等价物。。。
multi MAIN (Int $i) {...}   # foo 1
multi MAIN (Rat $i) {...}   # foo 1/2
multi MAIN (Num $i) {...}   # foo 1e6
multi MAIN ($i) {...}       # foo bar