Najlepszy samouczek referencje Perl W 2024 r. W tym samouczku możesz dowiedzieć się Tworzenie odwołań,dereference,okrągłe referencje,Funkcje referencyjne,

referencje Perl

Odniesienie to wskaźnik, odniesienie Perl jest typem skalarne mogą wskazywać na zmienne, tablice, stoliki hash (zwany także tablice asocjacyjne) lub podprogram może być używany w dowolnym miejscu w programie.


Tworzenie odwołań

Zdefiniowanych zmiennych, zmienna nazwa poprzedzona \, mamy odwołanie do zmiennej, takich jak:

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

W tablicy, możemy użyć anonimowego odniesienie tablicy, użyj [] Definicje:

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

elementy tablicy anonimowych może wciąż być anonimowy tablicy, więc możemy użyć tej metody do budowy tablicy tablic, tablica może być wykonana z dowolnego wymiaru.

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

Możemy użyć skrótu anonimowych hash odniesienia, użyj {} definicję:

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

Nie możemy utworzyć nazwę podprogramu odniesienie anonimowej procedury:

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

dereference

Zrezygnować stosowania mogą być wykorzystywane zależnie od rodzaju $ @ lub%, do unieważnienia, przykłady są następujące:

#!/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";

Realizacja powyższego przykładu wynikiem jest:

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

Jeżeli nie można określić typ zmiennej, można użyćref celu określenia wartości zwracanej wymienione poniżej następujące wartość jest zwracana, jeśli nie ma fałszywe:

SCALAR
ARRAY
HASH
CODE
GLOB
REF

Przykłady są następujące:

#!/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";

Realizacja powyższego przykładu wynikiem jest:

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

okrągłe referencje

Okrągłe referencje cytowane w dwóch wzajemnie pojawienia włącznie. Trzeba być ostrożnym w użyciu, w przeciwnym razie będzie to prowadzić do wycieków pamięci, następujące przykłady:

#!/usr/bin/perl

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

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

Realizacja powyższego przykładu wynikiem jest:

Value of foo is : REF(0x9aae38)

Funkcje referencyjne

Format Reference Funkcja: \ &

Funkcja referencyjny Format wywołania: i + nazwa odniesienia utworzony.

Przykłady są następujące:

#!/usr/bin/perl

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

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

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

Realizacja powyższego przykładu wynikiem jest:

元素 : age
元素 : 3
元素 : name
元素 : w3big
referencje Perl
10/30