我有2个perl文件,我想在另一个perl文件中使用一个变量的值作为输入,所以我能做到的是有任何像java这样的概念,我们可以将它声明为public并使用它。 任何帮助表示感谢!
答案 0 :(得分:0)
正如@ user2864740指出的那样,你不需要" OO"在perl中分享变量。这是一种方式,假设你有两个文件 的 Foo.pm 强>(包)的:强>
#!/usr/bin/perl
use strict;
use warnings;
use Exporter;
package Foo;
our @ISA = qw(Exporter);
our @EXPORT = qw( blat); #exported by default
our @EXPORT_OK = qw(bar );#not exported by default
our $x="42";#variable to be shared should be "our" not "my"
sub bar {
print "Hello $_[0]\n"
}
sub blat {
print "World $_[0]\n"
}
1;
从其他文件中访问该变量 bar.pl :
#!/usr/bin/perl
use strict;
use warnings;
use Foo;
print "$Foo::x";#imported variable
blat("hello");#imported subroutine
如果要导入列出的功能,则:
#!/usr/bin/perl
use strict;
use warnings;
use Foo qw(bar blat);# import listed subs
print "$Foo::x";#imported variable
blat("hello ");#imported subroutine
bar("hi");#this also get imported
答案 1 :(得分:0)
在这个答案中,我将跳过讨论是否使用OOP的正确决定,并假设你想以OOP方式进行。
简而言之,Perl中对象的所有变量都可以视为公共变量。事实上,问题往往是相反的 - 将其中一些私有化。无论如何,如果你有一个文件Obj.pm
,它定义了一个字段为foo
的对象,如下所示:
package Obj;
sub new {
my $class = shift;
my $self = {foo => "bar"};
bless $self, $class;
return $self;
}
您可以访问foo
变量,就好像它是公开的一样:
use Obj;
my $obj = Obj->new();
print $obj->{foo};
对于Perl中可能更愉快的OOP,请查看Moose
包,它可以提供更大的灵活性。