全局变量到底怎么用? 真晕了,perl神经病



[Copy to clipboard] [ - ]
CODE:
### aaa.pl
$aa = 'Hello';
$bb = 'world';
$cc = 'Hello c';
1;
### bbb.pl
require 'aaa.pl';
our $aa;
our $bb;
our $cc;

print $aa;
print $bb;
print $cc;

呵呵,$a与$b在 Perl 有妙用,测试程序最好不要用。
azhoulinux@azhou:/tmp$ cat a.pl b.pl
#!/usr/bin/perl

$a='aa';
$b='bb';
$c='cc';

#!/usr/bin/perl

require 'a.pl';

print $a;
print $b;
print $c;
azhoulinux@azhou:/tmp$ perl b.pl
aabbccazhoulinux@azhou:/tmp$
$a,$b算Perl的保留变量。。。。所以。。Perl 的确是“神经病”。
因为你用了use strict
要么别用它,要么别用$a、$b
谢谢大家, 学习了.  

第一次知道Perl还有$a, $b 这么奇怪的保留变量


QUOTE:
原帖由 ghostsaint 于 2007-4-28 10:22 发表
谢谢大家, 学习了.  

第一次知道Perl还有$a, $b 这么奇怪的保留变量

$a, $b只在几个有限的地方生效,你的无法打印$c跟这个无干啊。
sort { $a <=> $b } @arrays
$a $b确实属于保留变量,如楼上说贴,在sort hash的时候也有效。

Perl语言入门-第四版,书不错,系统看看吧~
错误提示要求requires explicit package name,
你就 explicit package name即可啊.perl可是好东西.

cat set.pl
#!/usr/bin/perl
package mypack;
$a = "Hello";
$b = "world";
$c = "Hello c";

cat call.pl
#!/usr/bin/perl
use strict;
require "set.pl";
print "$mypack::a\n";
print "$mypack::b\n";
print "$mypack::c\n";
#!/usr/bin/perl
use strict;
require "set.pl";

print "dd=$main::aa\n";
print "$main::bb\n";
print "$main::cc\n";