Perl 변수 역할 영역
23891 단어 perl
( )
$x = 1
,$x 。 , 2 :
1) , ;
2) 。
。 $x=1 , , , $x 。 ; 。
( packages)。 2 。 2 。 , 'AL', 'Al Gore' , 。 ,$x , $main::x。 , 'Al Gore' 'Gore' 。Al Gore AL Capone , 'AL'。 ,$Gore::Al $Capone::Al ,$main::x and $DBI::x 。
, ,perl 。 , 。
1.
$x,perl $x。 ? main, , :
package Mypackage;
, Mypackage。 , , 。 Mypackage, $x $Mypackage::x。 main, $x $main::x。
, MyModule, :
package MyModule;
, MyModule , , 。 DBI $x, , $MyModule::x, $DBI::x。
。 DBI , DBI , $DBI::errstr。 。$DBI::errstr , , ; 。 :
package DBI;
$errstr = 'Ha ha Tim!';
$DBI::errstr。
2.
1) , main。 x ,$::x $main::x。
2) main 。 , %ENV,perl %main::ENV, main。 %Fred::ENV, , Fred。 INC, $_,$$, @ARGV, STDIN, STDOUT, STDERR。
3) , , ::。 $DBD::Oracle::x。 x DBD::Oracle ; DBD 。Isaac Newton Olivia Newton-John , Newton::Isaac Newton::John::Olivia 。 Newton , 。Newton::John::Olivia Newton::John , Newton 。
。
, , 。 Perl 4 , , 。 perl 5 。
( )
Perl , 。 my , my 。 local , 。 , perl local 。 local , my, local。
my $x;
, x, , 。 。 , , 。
my , :
my $x = 119;
:
my ($x, $y, $z, @args) = (5, 23, @_);
。 :
sub print_report {
@employee_list = @_;
foreach $employee (@employee_list) {
$salary = lookup_salary($employee);
print_partial_report($employee, $salary);
}
}
lookup_salary $employee , print_report , 。 print_report lookup_salary 2 , 。 。 , , 。
: my :
sub print_report {
my @employee_list = @_;
foreach my $employee (@employee_list) {
my $salary = lookup_salary($employee);
print_partial_report($employee, $salary);
}
}
my @employee_list , print_report 。 my $employee , foreach 。 , ; , my 。my , , , 。 , 。 , my 。 , 。 my , , , 。 my , 。
my 。 , 。 。 :
my $x = 17;
package A;
$x = 12;
package B;
$x = 20;
# $x is now 20.
# $A::x and $B::x are still undefined
my $x=17 x , 。$x , $x 。
package A , $x , ,$x=12 $A::x 。 , package B ,$x=20 , 。
, $x 20, $main::x, $A::x, $B::x 。 , 。
:
。
, my 。
1. local my
, local , 。 , my ? :
my , local 。
,local $x : $x , , , undef 。 , $x 。 , 。 ,local 。 , :
$lo = 'global';
$m = 'global';
A();
sub A {
local $lo = 'AAA';
my $m = 'AAA';
B();
}
sub B {
print "B ", ($lo eq 'AAA' ? 'can' : 'cannot') ,
" see the value of lo set by A.
";
print "B ", ($m eq 'AAA' ? 'can' : 'cannot') ,
" see the value of m set by A.
";
}
:
B can see the value of lo set by A.
B cannot see the value of m set by A.
? A local , $lo AAA。 global , A , ,A B。B $lo , $lo , , A AAA 。
,my $x, A 。 A ,$m : $m; global。 B 。 AAA , , A 。
2.local ?
local , 。 , B $lo , A 。 。 , 。 my 。
local ? 90% 。 perl 。local , perl4 。 perl5 , 。 local, my 。 my, , ; local。my local 。
my, local ?
: my, local。
3.my
my ,perl , 。 , x=1 50 :
for (1 .. 50) {
my $x;
$x++;
print "x=$x
";
}
, $x, undef。
, , :
{ my $x;
for (1 .. 50) {
$x++;
print "x=$x
";
}
}
x=1, x=2, x=3, ... x=50.
。 , 。 , 。 ( perl rand ) 。 。 , , 。 , 。
:
$seed = 1;
sub my_rand {
$seed = int(($seed * 1103515245 + 12345) / 65536) % 32768;
return $seed;
}
:
16838
14666
10953
11665
7451
26316
27974
27550
, $seed , 。 , 。 , , ?
$seed my :
sub my_rand {
my $seed;
$seed = int(($seed * 1103515245 + 12345) / 65536) % 32768;
return $seed;
}
, my_rand ,$seed undef。 , my_rand ,$seed 。
:
{ my $seed = 1;
sub my_rand {
$seed = int(($seed * 1103515245 + 12345) / 65536) % 32768;
return $seed;
}
}
, , 。 my , , 。my_rand , $seed my_rand 。
4. my
1) my , _, @_, $$。 $1, $2, ... my 。my 。
2) , my $DBI::errstr, : $DBI::errstr 。 local $DBI::errstr; local $DBI::errstr , 。
3) perl 5.004 , :
foreach my $i (@list) {
$i 。 ,
for (my $i=0; $i<100; $i++) {
$i for 。
( )
, , my 。 , ?
sub function {
$x = 42; # Oops, should have been my $x = 42.
}
, $x。 , 。
perl , 。 :
use strict 'vars';
,perl 。$x=42 $x , ; , , :
Global symbol "$x" requires explicit package name at ...
$x my , my。 , :
$main::x = 42;
。
use strict , perldoc strict 。
Algorithms::KnuthBendix , strict vars , $Algorithms::KnuthBendix::Error, 。
strict vars :
package Algorithms::KnuthBendix;
use vars '$Error';
$Error , $Algorithms::KnuthBendix::Error strict vars 。
, strict vars:
{ no strict 'vars';
# strict vars is off for the rest of the block.
}
( )
。 。 , perl , package 。 , my。 local, 。
, 2 。
, use strict 'vars'。 , , use vars 。
( ) 'our'
perl 5.6.0 our(...) 。 my() , use vars 。
,our() use vars; , strict 'vars' 。 use vars, 2 : , 。 , stict :
use strict 'vars';
{
our($x);
$x = 1; # $x
}
$x = 2; # $x
use vars '$x' , $x。our($x) $x, , 。
our , :
our strict pragma, our , , . , , strict pragma . :
1. #! /usr/bin/perl -w
2.
3. use strict;
4.
5. {
6. our $var;
7. $var = 2;
8. print $var, "
";
9. }
10.
11. if ( defined $main::var ){
12. print '$main::var defined! value = ', "$main::var.
";
13. }
14. else{
15. print '$main::var not defined!', "
";
16. }
:
2
$main::var defined! value = 2.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
File::Temp를 사용하여 Perl에서 잠금 파일 만들기retrieve 명령은 "perl"이라는 단어에 대한 DuckDuckGo 검색의 HTML을 검색하여 $HOME/duckduckperl.html 에 쓰고 이미 있는 경우 이 파일을 덮어씁니다. print 명령은 $HO...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.