使用 setter Perl 从另一个包设置全局变量
Set global variable from another package with setter Perl
我试图在另一个包中设置全局变量,但不幸的是它被设置为 undef,尽管如此它在调试模式下显示参数变量是正确的但设置为 undef。
这是我的代码。
SuperFunc.pm
#!/usr/bin/perl
use strict;
use warnings;
package SuperFunc;
my $global_x = 20;
my $global_y = 20;
sub set_x {
my $new_x = shift;
if($new_x) {
$global_x = $new_x;
}
}
sub set_y {
my $new_y = shift;
if($new_y) {
$global_y = $new_y;
}
}
和Main.pl
.......
SuperFunc::set_x($x);
SuperFunc::set_y($y);
.......
怎么了?
它似乎工作正常。没有更多代码我真的不明白这个问题。
也许您正在寻找 http://perldoc.perl.org/functions/our.html ?
脚本
use strict;
use lib "./lib";
use SuperFunc;
SuperFunc::log();
SuperFunc::set_x(1);
SuperFunc::set_y(2);
SuperFunc::log();
模块
#!/usr/bin/perl
use strict;
use warnings;
package SuperFunc;
my $global_x = 20;
my $global_y = 20;
sub set_x {
my $new_x = shift;
if($new_x) {
$global_x = $new_x;
}
}
sub set_y {
my $new_y = shift;
if($new_y) {
$global_y = $new_y;
}
}
sub log {
print "$global_x\n$global_y";
}
输出
20
20
1
2
我试图在另一个包中设置全局变量,但不幸的是它被设置为 undef,尽管如此它在调试模式下显示参数变量是正确的但设置为 undef。
这是我的代码。
SuperFunc.pm
#!/usr/bin/perl
use strict;
use warnings;
package SuperFunc;
my $global_x = 20;
my $global_y = 20;
sub set_x {
my $new_x = shift;
if($new_x) {
$global_x = $new_x;
}
}
sub set_y {
my $new_y = shift;
if($new_y) {
$global_y = $new_y;
}
}
和Main.pl
.......
SuperFunc::set_x($x);
SuperFunc::set_y($y);
.......
怎么了?
它似乎工作正常。没有更多代码我真的不明白这个问题。
也许您正在寻找 http://perldoc.perl.org/functions/our.html ?
脚本
use strict;
use lib "./lib";
use SuperFunc;
SuperFunc::log();
SuperFunc::set_x(1);
SuperFunc::set_y(2);
SuperFunc::log();
模块
#!/usr/bin/perl
use strict;
use warnings;
package SuperFunc;
my $global_x = 20;
my $global_y = 20;
sub set_x {
my $new_x = shift;
if($new_x) {
$global_x = $new_x;
}
}
sub set_y {
my $new_y = shift;
if($new_y) {
$global_y = $new_y;
}
}
sub log {
print "$global_x\n$global_y";
}
输出
20
20
1
2