Latest web development tutorials

펄 참조

참조는 포인터, 펄 참조가 스칼라 형 변수, 배열, 해시 테이블을 가리킬 수있다 (도 연관 배열이라고도 함) 또는 서브 루틴 프로그램에서 어디서나 사용할 수 있습니다.


참조 만들기

정의 된 변수는 \ 앞에 변수 이름, 우리는 같은 변수에 대한 참조를 가져옵니다 :

$scalarref = \$foo;     # 标量变量引用
$arrayref  = \@ARGV;    # 列表的引用
$hashref   = \%ENV;     # 哈希的引用
$coderef   = \&handler; # 子过程引用
$globref   = \*foo;     # GLOB句柄引用

배열, 우리는 익명의 배열 참조를 사용할 수 있습니다, [] 정의를 사용합니다 :

$aref= [ 1,"foo",undef,13 ];

익명 배열 요소는 여전히 익명의 배열 될 수있다, 그래서 우리는 배열의 배열을 구성하기 위해이 방법을 사용할 수 있습니다, 배열은 모든 사이즈로 구성 될 수있다.

my $aref = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9],
]

우리는 해시 익명 해시 참조를 사용하여, {} 정의를 사용

$href= { APR =>4, AUG =>8 };

우리는 서브 루틴의 이름을 익명 서브 루틴 참조를 만들 수 없습니다 :

$coderef = sub { print "w3big!\n" };

역 참조

다음 프로그램을 취소하면 $ @ %이나, 취소의 종류에 따라 사용할 수 있으며, 예이다 :

#!/usr/bin/perl

$var = 10;

# $r 引用 $var 标量
$r = \$var;

# 输出本地存储的 $r 的变量值
print "$var 为 : ", $$r, "\n";

@var = (1, 2, 3);
# $r 引用  @var 数组
$r = \@var;
# 输出本地存储的 $r 的变量值
print "@var 为: ",  @$r, "\n";

%var = ('key1' => 10, 'key2' => 20);
# $r 引用  %var 数组
$r = \%var;
# 输出本地存储的 $r 的变量值
print "%var 为 : ", %$r, "\n";

결과가 상기 실시 예의 구현 :

10 为 : 10
1 2 3 为: 123
%var 为 : key110key220

만약 변수 타입을 결정할 수없는 경우, 아래의 반환 값을 결정하기 위해REF를 사용하여 다음의 값은 오류가 존재하지 않는 경우는 리턴된다 :

SCALAR
ARRAY
HASH
CODE
GLOB
REF

다음 예는 다음과 같다 :

#!/usr/bin/perl

$var = 10;
$r = \$var;
print "r 的引用类型 : ", ref($r), "\n";

@var = (1, 2, 3);
$r = \@var;
print "r 的引用类型 : ", ref($r), "\n";

%var = ('key1' => 10, 'key2' => 20);
$r = \%var;
print "r 的引用类型 : ", ref($r), "\n";

결과가 상기 실시 예의 구현 :

r 的引用类型 : SCALAR
r 的引用类型 : ARRAY
r 的引用类型 : HASH

순환 참조

순환 참조는 두 개의 상호 포함 출현에서 인용. 당신은 그렇지 않으면 메모리 누수, 다음 예제로 이어질 것입니다, 사용주의해야합니다 :

#!/usr/bin/perl

my $foo = 100;
$foo = \$foo;

print "Value of foo is : ", $$foo, "\n";

결과가 상기 실시 예의 구현 :

Value of foo is : REF(0x9aae38)

참조 함수

함수 참조 형식 : \ &

참조 함수 호출 형식 & + 참조 이름 만들었다.

다음 예는 다음과 같다 :

#!/usr/bin/perl

# 函数定义
sub PrintHash{
   my (%hash) = @_;
   
   foreach $item (%hash){
      print "元素 : $item\n";
   }
}
%hash = ('name' => 'w3big', 'age' => 3);

# 创建函数的引用
$cref = \&PrintHash;

# 使用引用调用函数
&$cref(%hash);

결과가 상기 실시 예의 구현 :

元素 : age
元素 : 3
元素 : name
元素 : w3big