referensi perl
Referensi adalah pointer, referensi Perl adalah tipe skalar dapat menunjuk ke variabel, array, tabel hash (juga disebut array asosiatif) atau subroutine dapat digunakan di mana saja dalam program.
Buat referensi
variabel yang didefinisikan, nama variabel diawali dengan \, kita mendapatkan referensi ke variabel, seperti:
$scalarref = \$foo; # 标量变量引用 $arrayref = \@ARGV; # 列表的引用 $hashref = \%ENV; # 哈希的引用 $coderef = \&handler; # 子过程引用 $globref = \*foo; # GLOB句柄引用
Dalam array, kita dapat menggunakan referensi array anonim, menggunakan [] Definisi:
$aref= [ 1,"foo",undef,13 ];
Anonymous berbagai elemen masih bisa array yang anonim, sehingga kita dapat menggunakan metode ini untuk membangun sebuah array dari array, array dapat dibangun dari dimensi apapun.
my $aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]
Kita dapat menggunakan hash anonim referensi hash, menggunakan {} definisi:
$href= { APR =>4, AUG =>8 };
Kita tidak bisa membuat nama subroutine anonim subroutine referensi:
$coderef = sub { print "w3big!\n" };
dereference
Membatalkan aplikasi dapat digunakan tergantung pada jenis $, @ atau%, untuk membatalkan, contoh adalah sebagai berikut:
#!/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";
Pelaksanaan contoh di atas hasilnya adalah:
10 为 : 10 1 2 3 为: 123 %var 为 : key110key220
Jika Anda tidak dapat menentukan jenis variabel, Anda dapat menggunakanwasit untuk menentukan nilai kembali tercantum di bawah, nilai berikut dikembalikan jika tidak ada yang salah:
SCALAR ARRAY HASH CODE GLOB REF
Contohnya adalah sebagai berikut:
#!/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";
Pelaksanaan contoh di atas hasilnya adalah:
r 的引用类型 : SCALAR r 的引用类型 : ARRAY r 的引用类型 : HASH
referensi melingkar
referensi melingkar dikutip dalam dua munculnya saling inklusif. Anda harus berhati-hati menggunakan, jika tidak maka akan menyebabkan kebocoran memori, contoh-contoh berikut:
#!/usr/bin/perl my $foo = 100; $foo = \$foo; print "Value of foo is : ", $$foo, "\n";
Pelaksanaan contoh di atas hasilnya adalah:
Value of foo is : REF(0x9aae38)
Fungsi referensi
Fungsi Format Referensi: \ &
fungsi referensi Format panggilan: & + nama referensi dibuat.
Contohnya adalah sebagai berikut:
#!/usr/bin/perl # 函数定义 sub PrintHash{ my (%hash) = @_; foreach $item (%hash){ print "元素 : $item\n"; } } %hash = ('name' => 'w3big', 'age' => 3); # 创建函数的引用 $cref = \&PrintHash; # 使用引用调用函数 &$cref(%hash);
Pelaksanaan contoh di atas hasilnya adalah:
元素 : age 元素 : 3 元素 : name 元素 : w3big