Latest web development tutorials

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