相当于用于Ruby,Perl的Perl Modulino?

问题描述:

我知道Perl有一种称为modulino的设计模式,其中库模块文件可以充当库和脚本。在Ruby/Python中是否有与此相当的内容?相当于用于Ruby,Perl的Perl Modulino?

我认为这种设计模式对我来说非常有用;我正在写一些相当短的工作人员,但也需要一个脚本来运行它们。我认为将这些全部放在同一个地方会很方便。

谢谢!

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不会。

+0

谢谢,这正是我所期待的。现在找到Ruby的等价物...... – deakolt 2013-04-29 22:07:10

这是Ruby版本:

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

Perl 6的有这个功能内置在你定义一个名为MAIN如果使用文件作为一个脚本,执行子程序:

sub MAIN { ... } 

MAIN的签名告诉Perl 6如何解析命令行参数。你可以使用多重子集,而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