riferimenti Perl
Riferimento è un puntatore, il riferimento Perl è un tipo scalare può puntare a variabili, matrici, tabelle hash (chiamato anche array associativi) o subroutine può essere utilizzato ovunque nel programma.
creare riferimenti
variabili definite, il nome della variabile preceduto da un \, otteniamo un riferimento alla variabile, come ad esempio:
$scalarref = \$foo; # 标量变量引用 $arrayref = \@ARGV; # 列表的引用 $hashref = \%ENV; # 哈希的引用 $coderef = \&handler; # 子过程引用 $globref = \*foo; # GLOB句柄引用
Nella matrice, possiamo utilizzare un riferimento array anonimo, usare Definizione []:
$aref= [ 1,"foo",undef,13 ];
elementi di un array anonimi possono essere ancora array anonimo, in modo che possiamo utilizzare questo metodo per costruire un array di array, l'array può essere costruito di qualsiasi dimensione.
my $aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]
Possiamo usare un hash riferimenti hash anonimi, utilizzare {} definizione:
$href= { APR =>4, AUG =>8 };
Non possiamo creare un nome di subroutine di riferimento subroutine anonima:
$coderef = sub { print "w3big!\n" };
dereference
Annulla applicazione può essere utilizzato a seconda del tipo di $, @ o%, di annullare, esempi sono i seguenti:
#!/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";
Esecuzione del precedente esempio il risultato è:
10 为 : 10 1 2 3 为: 123 %var 为 : key110key220
Se non è possibile determinare il tipo di variabile, è possibile utilizzarel'arbitro per determinare il valore di ritorno riportato di seguito, il seguente valore viene restituito se non vi è alcuna falsa:
SCALAR ARRAY HASH CODE GLOB REF
Esempi sono i seguenti:
#!/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";
Esecuzione del precedente esempio il risultato è:
r 的引用类型 : SCALAR r 的引用类型 : ARRAY r 的引用类型 : HASH
riferimenti circolari
riferimenti circolari citate in due emergere mutuamente inclusiva. È necessario essere attenti a usare, altrimenti si porterà a perdite di memoria, i seguenti esempi:
#!/usr/bin/perl my $foo = 100; $foo = \$foo; print "Value of foo is : ", $$foo, "\n";
Esecuzione del precedente esempio il risultato è:
Value of foo is : REF(0x9aae38)
Funzioni di riferimento
Funzione di formattazione Riferimento: \ &
Riferimento formato chiamata di funzione: & nome di riferimento + creato.
Esempi sono i seguenti:
#!/usr/bin/perl # 函数定义 sub PrintHash{ my (%hash) = @_; foreach $item (%hash){ print "元素 : $item\n"; } } %hash = ('name' => 'w3big', 'age' => 3); # 创建函数的引用 $cref = \&PrintHash; # 使用引用调用函数 &$cref(%hash);
Esecuzione del precedente esempio il risultato è:
元素 : age 元素 : 3 元素 : name 元素 : w3big