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" };

Dereference

إلغاء تطبيق يمكن استخدامها تبعا لنوع من $، @ أو٪، لإلغاء، والأمثلة على النحو التالي:

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

إذا لم تتمكن من تحديد نوع المتغير، يمكنك استخدامالمرجع لتحديد قيمة الإرجاع المذكورة أدناه، يتم إرجاع القيمة التالية إذا لم يكن هناك كاذبة:

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