gpt4 book ai didi

perl - 在 Perl 中,如何确定我的文件是作为模块使用还是作为脚本运行?

转载 作者:行者123 更新时间:2023-12-04 02:51:26 27 4
gpt4 key购买 nike

假设我有一个 Perl 文件,其中的某些部分只有在作为脚本调用时才需要运行。我记得以前读过有关将这些部分包含在 main() 方法中并执行

main() unless(<some condition which tests if I'm being used as a module>);

但我忘记了条件是什么。搜索谷歌并没有取得任何成果。有人可以指出寻找这个的正确位置吗?

最佳答案

如果文件作为脚本调用,则不会有 caller所以你可以使用:

main() unless caller;

brian d foyexplanation .
#!/usr/bin/perl

use strict;
use warnings;

main() unless caller;

sub main {
my $obj = MyClass->new;
$obj->hello;
}

package MyClass;

use strict;
use warnings;

sub new { bless {} => shift };

sub hello { print "Hello World\n" }

no warnings 'void';
"MyClass"

输出:
C:\Temp> perl MyClass.pm
Hello World

从另一个脚本使用:
C:\Temp\> cat mytest.pl
#!/usr/bin/perl

use strict;
use warnings;

use MyClass;

my $obj = MyClass->new;
$obj->hello;

输出:
C:\Temp> mytest.pl
Hello World

关于perl - 在 Perl 中,如何确定我的文件是作为模块使用还是作为脚本运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1131304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com