Skip to content

Latest commit

 

History

History
1268 lines (860 loc) · 36.2 KB

perlreftut.pod

File metadata and controls

1268 lines (860 loc) · 36.2 KB

NAME

perlreftut - Mark ��˨�������ŝ����<�㋘�潟�鴻�̹�≪����������⓾����㏍�������ャ�若����ŝ�≪�

DESCRIPTION

Perl 5 ��˨�����������������荀���ʋ�井����純�勌����ゃ�壔��紊�罨≦����������������鴻�������� ��������激�ャ�勉�������ʃ�������ŝ����若�炊����������宴����������勉�с�������遵����с����� �������������櫝�純����������������˨��Perl 5 ��� ��ŝ����<�㋘�潟�� �����若�違�����罘���純��絨���ャ����� ��������⓾�ŝ����<�㋘�潟�鴻��篏帥����������壔��茲������ф����������������������若�帥�� Perl ��ф�宴���������� ��泣�с����� 罧�綽泣�ŝ�������˨��絖⓾�吟�˨�壔����������ʋ�������������������������������<�ゃ�潟� ��������ャ�≪�˨����若�吾�壔����í�㏍�若�������勉����c�������倶����с����� ��������ャ�≪�˨�壔�祉�弱����с�с����������������☀˛�����壚��������荀���т��������荀���с�ŝ�������� 茯㋛����������勉����c�������勉�у�馹����荀���ゃ����������������������障�����

綛檎����˨�������<�ゃ�潟����若�吾�˨�������������� 10% �����ャ����������� 90% ��勖�ð�泣�� ��������������������с����障����� �����勉����若�吾�с�壔����ŝ����˨����� 10% ������荀���������障�����

Who Needs Complicated Data Structures?

(茯違��茲���������若�炊��������綽�荀���������⓾��������?)

�����ゃ�������c����馹���勌����ゃ�������ŝ�鴻����勐�ゃ�������c����������激�ャ�勐��荀���с�с�������� Perl ��壔����<�������������激�ャ�������c�⓾����障����������������勐�ゃ� ��鴻�˨�í�с�ŝ�������違�ŝ����������ŝ�鴻�����篏帥����������壔�с����障�������с��������

��ŝ�鴻����勉�������激�ャ����ŝ��篏帥����������勉�с�����������? 膂≦����ŭ����ц�������⓾�帥�障��������: �����ŝ�����篁ヤ����勉�������ʒ�遵�������純�勐�������勉����<�ゃ�˨�������c�⓾�������������障��:

Chicago, USA
Frankfurt, Germany
Berlin, Germany
Washington, USA
Helsinki, Finland
New York, USA

��������⓾��篁ヤ����勉�������˨����純�壚��綺⓾������憗����⓾����勐�純�勰�遵�������≪�˨����<������������� �憗�������������ɱ�阪�����緇���������c����������障��:

Finland: Helsinki.
Germany: Berlin, Frankfurt.
USA:  Chicago, New York, Washington.

���������茵������ɾ�吟�ʋ�号����壔����㏍�若����純�勐�������с�������������激�ャ��篏帥����������с����� ��純�勐�������壔����勐�純�勰�遵����勉�ŝ�鴻����̹�∫�d�������������障����� ��ュ�����茯㏍�������潟����純�◒�遵����������蚊�������違����ʒ�遵�������ŝ�鴻����̬申��������障����� ��ュ�����茯㏍�睡��������������絽檎�������������激�ャ����ゃ����㋘�若�������⓾����阪����勐����̹�遵���� �����ŝ�鴻�������純�若�������⓾�������障�����

��������������激�ャ�勐�ゃ����ŝ�鴻����˨�с����ŝ�������違����ŝ����勤�������с����� ��������������壔����鴻�⓾�勰�遵�����筝���ゃ�勖��絖������̹�g����������阪����������������˨����勖��絖������� ��ŝ�鴻��������茹c����⓾����������勉�ŝ�鴻�������純�若�������⓾�������勛�����������綺〠��絖������御�祉�� 綽�荀������������с����������� ��������壔����������˨�������⓾�������í�若�������∴昭��帥����������������鴻�с����� ��������激�ャ�勐�ゃ����ŝ�鴻����˨�с����������������違����馹����茹f浦��с�����絎���с�ŝ�ŝ�鴻����� �����с�� Perl ��壩����c�⓾�������勉�с����������壚��羣���������障����障�����

The Solution

(茹f浦羈�)

Perl 5 ��勖��篁c�с����������с�˨����勉����吟�ゃ�潟����違�c�⓾����障�����: ��������激�ャ�勐�ゃ� ��鴻�˨�í�с�ŝ�������違�ŝ����ŝ����勉�с����� ���������茹f浦��������勉����ŝ����<�㋘�潟�鴻�с�����

��ŝ����<�㋘�潟�鴻�奝��������篏������������激�ュ��篏�(�����������壔�����篁ュ����勌�����)��� �����с����� ��鴻�˨�í�с����� ��������壔����с�˨�ŝ����帥�勖訓�����ŝ����<�㋘�潟�鴻�勌��腮勉�с����� ��≪�<�ŝ�����茵���純�勐ぇ腟演�������������⓾�帥�障��������: ���篁���т����ɾ�宴�ŝ��茵����薨��� ��ャ�c��茴���с����� ������������綵若�˨�ゃ����☀����������������潟�潟����ャ�若�帥����㏍�違�í����у充���茵������������ 綽�荀���ŝ�勉�壔��膂≦����с��箴水�í�ŝ�鴻�˨�ð��絖�������Barack Obama�����ŝ�勉�с�����

Perl ��˨����������ŝ����<�㋘�潟�鴻�奝����������������激�ャ�勐�������˩室��⓾����障����� ������������ Perl ��勉����í�ゃ����若����у����◐����ɱ�������ŝ�勉�ф����с�������ŝ����������� 篆�荐若�с����障����� ���Barack Obama��������夌�違�ŝ�����筝���ゃ�勉�ŝ����<�㋘�潟�鴻�壚����ゃ�勉����勉����������с����障�������� ���������篏����筝���ゃ�勐�������с�ŝ�˨����若�с����障����� ��������激�ャ�吾�勉�ŝ����<�㋘�潟�鴻�������c�⓾�������違����������激�ュ��篏������ŝ�˨����若�с����障����� ��������������ŝ����<�㋘�潟�鴻�夌亜�����с����潟�潟����壔����ŝ�鴻�˨�ï�ゃ�ŝ�勉�с�����

�����ŝ����壠�ゃ����������с�������������激�ャ�������ゃ�������壔�с����障�����; ��������激�ャ�勐�ゃ� ��鴻�˨�í�勉�水櫝�純�с����� ��������������<�壔����������違�c�⓾����障����� ������������筝���ゃ�勉�ŝ����<�㋘�潟�鴻�奝��������篏���������с����������������с�������ŝ����<�㋘�潟�鴻� ��鴻�˨�í�ŝ�勉�с����������吾�勉�ŝ����<�㋘�潟�鴻�勉�������激�ャ�������ゃ����������с����障��; ��������⓾�������奝�������勉�������激�ャ�勉����������壔�������������������勉�������激�ャ�с����������勉������� 箴水�í�ŝ�勉�с�����

�����勰�遵�������純�勐�馹���˨�壔�ŝ����<�㋘�潟�鴻����宴����������勐江��ゃ����勖��������荀����緇��� ��祉����障�����

Syntax

(���羈�)

��ŝ����<�㋘�潟�鴻��篏������˨�壚����ゃ�勖�号��������������篏帥����˨��篋���ゃ�勖�号�������������障�����

Making References

(��ŝ����<�㋘�潟�鴻��篏����)

Make Rule 1

(篏������˨�若�� 1)

������紊���違�勐����㏍�� \ �����ゃ�������違�������勐����違�吾�勉�ŝ����<�㋘�潟�鴻�� 緇���������������с����障�����

$aref = \@array;         # $aref ��� @array ��吾�勉�ŝ����<�㋘�潟�鴻��篆����������
$href = \%hash;          # $href ��� %hash ��吾�勉�ŝ����<�㋘�潟�鴻��篆����������
$sref = \$scalar;        # $sref ��� $scalar ��吾�勉�ŝ����<�㋘�潟�鴻��篆����������

$aref ��� $href ��勉�������ɱ����違�˨�ŝ����<�㋘�潟�鴻����主�������⓾����障����違�� ��鴻�˨�ï����違�勉�������˨�潟����若����������主�������������������с����障��:

$xy = $aref;             # $xy ��� @array ��吾�勉�ŝ����<�㋘�潟�鴻��篆����������
$p[3] = $href;           # $p[3] ��� %hash ��吾�勉�ŝ����<�㋘�潟�鴻��篆����������
$z = $p[3];              # $z ��� %hash ��吾�勉�ŝ����<�㋘�潟�鴻��篆����������

�����������勌����壔�����������篏帥�c�☗����違�吾�勉�ŝ����<�㋘�潟�鴻��篏������号����� 箴�腓冴����������勉�с�������� ��������������⓾����������������c�⓾����ŝ�������������������激�ャ��篏������������������� ��������������������障�������� ��������壔�����絖���� "\n" ��������医�� 80 ������筝���☗�����篁����紊���違�˩��膊<����� 綽�荀���ŝ����˩戎��������������˨�������号�����篌若�⓾����障�����

Make Rule 2

[ ITEMS ] ��壩�違����ɾ�≦�����������篏������������勰�������吾�勉�ŝ����<�㋘�潟�鴻��菴������障����� { ITEMS } ��壩�違����ɾ�≦����������激�ャ��篏������������勉�������激�ャ�吾�勉�ŝ����<�㋘�潟�鴻�� 菴������障�����

$aref = [ 1, "foo", undef, 13 ];  
# $aref ��奝�������吾�勉�ŝ����<�㋘�潟�鴻��篆���������⓾�����
$href = { APR => 4, AUG => 8 };   
# $href ��壔�������激�ャ�吾�勉�ŝ����<�㋘�潟�鴻��篆���������⓾�����

��˨�若�� 2 ��˨����c�☗�������ŝ����<�㋘�潟�鴻�壔�˨�若�� 1 ��˨����c�☗��������腮勉� ��ŝ����<�㋘�潟�鴻����������с��:

# ���������:
$aref = [ 1, 2, 3 ];
# ���������������:
@array = (1, 2, 3);
$aref = \@array;

��������勤����夌����鋋�茵������㏍�������������勉�с��@array ���������篏������ʒ�����紊���違�� 篏������障��������

[] �����吾�������翫����˨�壩�違����ɾÃ��勛�≦�����������緇���������障����� {} �����吾�������翫����˨�壩�違����ɾÃ��勛�≦����������激�ャ��緇���������障�����

Using References

(��ŝ����<�㋘�潟�鴻��篏帥��)

��ŝ����<�㋘�潟�鴻��緇����緇���с��������絲障����⓾�с��������������? ��ŝ����<�㋘�潟�鴻�壔�鴻�˨�ï�ゃ�с����������鴻�˨�í�с����������勉����������主����������� ��ゃ��緇���������с��������������荀���⓾����障�������� ��ŝ����<�㋘�潟�鴻��篏帥����˨�壚����˩����ゃ�勖�号�������������障�����

Use Rule 1

(篏睡����˨�若�� 1)

��������勉�ŝ����<�㋘�潟�鴻�������������勐��������臀勉����������贋����с�˨�若�ŝ�若����㋘�若�鴻�勌賢�� 篏帥�������������с����障����� �����������違��@array ��勌撮��������� @{$aref} ��������障�����

篁ヤ����˩�������������障��:

������:

@a              @{$aref}                ������
reverse @a      reverse @{$aref}        ������������荵≪�����
$a[3]           ${$aref}[3]             ��������勤��膣�
$a[3] = 17;     ${$aref}[3] = 17        荀�膣���勌撮��

���茵���勌����ゃ�勐����壠��������������茵������障����� 綏☗�眼�勉����勉�� @a ������������������絲障��������篏���с����� �勀�眼�勉����勉�� $aref ��˨����c�☗����с�����������������絲障��������篏���с����� ���篏�������������������荀���ゃ�������違��筝≧�鴻�勉����若�吾�с�潟�奝��������絲障����☗�������������� 茵������障�����

��������激�ャ�勉�ŝ����<�㋘�潟�鴻��篏帥����������� ��障�c����� ��������с��:

%h              %{$href}              ��������激�
keys %h         keys %{$href}         ��������激�ャ�������㏍�若��緇����
$h{'red'}       ${$href}{'red'}       ��������激�ャ�勤��膣�
$h{'red'} = 17  ${$href}{'red'} = 17  荀�膣���吾�勌撮��

��ŝ����<�㋘�潟�鴻��絲障����☀�������������������壔����鴻�⓾��"Use Rule 1" �� ��í�勉�������̬�����������茯㋛����������⓾����障����� ���絽吾�勰����������������激�ャ��絲障����☗��������������茵������������� Perl ��潟�若�������吾���������� �����������������激�ャ����ŝ����<�㋘�潟�� {$reference} ��х舟��������������勉�с����� ���腱���������c�⓾�������勉����ŝ����<�㋘�潟�鴻�с�����������������������絲障����⓾�˨�若����������˨��?��� ������������������絲障����⓾�˨�若����������˨�壩❶��勉����������吾����с��������

for my $element (@array) {
  ...
}

��������⓾����勰�������� @array �����ŝ����<�㋘�潟�鴻�х舟�����������障��:

for my $element (@{$aref}) {
  ...
}

���腱���������c�⓾�������勉����ŝ����<�㋘�潟�鴻�с����������������������激�ャ�勐��絎鴻����阪����������˨��?��� ��障����壔�������˨�������激�ャ����阪����������潟�若�������吾����障��:

for my $key (keys %hash) {
  print "$key => $hash{$key}\n";
}

��������⓾�������激�ャ�勐����������ŝ����<�㋘�潟�鴻�х舟�����������障��:

for my $key (keys %{$href}) {
  print "$key => ${$href}{$key}\n";
}

Use Rule 2

(篏睡����˨�若�� 2)

Use Rule 1 ��壔����ŝ�����絎�������綽�荀���������������鴻�⓾�с��; ��ŝ����ŝ�������ŝ����<�㋘�潟�鴻�˨�ゃ����☗��荀������ŝ�������������鴻�⓾��茯㋛�������⓾�������������с����� �����������������������������激�ャ�˨�ゃ����☀�������������������勐ぇ��������壚����ゃ�勤��膣���� ��������冴����������с��Use Rule 1 ��勤��羈���壩�宴����˨����������勉�с����� �����勉����������ヨ��羈������������障�����

${$aref}[3] ��虁˛��帥�ャ�������勉�с��篁c�������� $aref->[3] �����吾����������� ��с����障�����

${$href}{red} ��虁˛��帥�ャ�������勉�с��篁c�������� $href->{red} �� ��吾�������������с����障�����

$aref �����������吾�勉�ŝ����<�㋘�潟�鴻��篆���������⓾��������������$aref->[3] �� �����勰�������勐����ɾ�勉�勤��膣���с����� ��������� $aref[3] ���羞桁�������ŝ����с�����������; 緇������� @aref ��������� ��������勉�ゃ�������������勐����ɾ�勉�勤��膣���с����� $aref ��� @aref ��壔��$item ��� @item �����������с������������� ��♂�≫����ŝ����勉�с�����

���罕���˨��$href->{'red'} ��壔�鴻�˨�ï����� $href ��˨����c�☗����с�������� ��������激��(��������������壠�������勉�ŝ��������)��勌����������с����� $href{'red'} ��� %href �����������������勉�ゃ�������������激�ャ�勌�������с����� -> ��壔�ゃ��綽������������������������ゃ��綽���������ŝ����違����ŝ����勉����㏍�違�í�������������� ��������激�ャ�勤��膣������������冴����������������������˨��篋���������⓾����ŝ����������激�ャ����������� ��≪�壔�祉�鴻�������������˨�����絅�絋���ɾ��������緇������������˨�ŝ����с�����������

An Example

(箴�)

�����������í����ŝ�˩梢��í�ŝ�����������箴������������⓾�帥�⓾�帥�障�����������

��障����壔�������˨��[1, 2, 3] ��� (1, 2, 3) ������罕���������������≦����������� 篏������冴����������勰��������絲障�������ŝ����<�㋘�潟�鴻��筝������������������������冴����⓾��������������

��������т札筝���˨�ゃ����☀�������障��

@a = ( [1, 2, 3],
               [4, 5, 6],
       [7, 8, 9]
             );

@a ��壚����ゃ�勤��膣���������ら�������с�������勤��膣���壔�������������ャ�勰��������絲障����� ��ŝ����<�㋘�潟�鴻�с�����

$a[1] ��壔����勉�������ŝ�ŝ����<�㋘�潟�鴻�勌����ゃ�с����� ��������� (4,5,6) ��������ŝ����������������с����障����� ��������奝�������吾�勉�ŝ����<�㋘�潟�鴻�с��Use Rule 2 ��壔����勉������� ��������勛⓬筝�荀�膣����緇������������� $a[1]->[2] �����吾��������������菴違�鴻�⓾�������勉�с�� $a[1]->[2] ��� 6 ��˨�ŝ����障����� ���罕���˨��$a[0]->[1] ��� 2 ��с����� ��������х�������<��緇���������勉�壚��罨≦����������勉�������ŝ����勉�с��; ��������勌算�����勤����勌算�����勐����˨�����荀�膣����緇������������������˨�祉����������������������勉� $a[ROW]->[COLUMN] �����吾�������������с����障�����

�����勤��羈���壔�障��絨������宴����˨����������勉�ŝ�勉�с����ヨ��羈������������障��:

Arrow Rule

(��√�違�勉�˨�若��)

��√�違�壔��篋���ゃ�� 羞祉��絖� ��勰����˨�������勉�ŝ����������ャ�с����障�����

$a[1]->[2] ��� $a[1][2] �����吾�������������с����障��; �����������壠�������������������潟����障����� $a[0]->[1] = 23 �����吾�鋌c�������� $a[0][1] = 23 �����с����障��; �����������壠�������������с�����

��������ф�㋚����˩��罨≦�������������������ŝ����障�����!

��√�違�����荀���ŝ����������������с����������障����� ��������√�違����ŝ�������違��$a[1][2] ��勌撮��������� ${$a[1]}[2] �� ��吾����ŝ�������違�ŝ����障�������� 筝�罨≦����������с�壔��${${$x[2]}[3]}[5] ��勉�������ʃ˛��帥�ャ����������勉�с�壔�ŝ���� $x[2][3][5] �����с����障�����

Solution

(膈����)

篁ヤ����壠����˩����������⓾�������馹����絲障�����茹g����с��; ��遵�������純�勐�������勉����<�ゃ�˨� ��������í�若�����������茵���������勉�с�����

1   my %table;

2   while (<>) {
3     chomp;
4     my ($city, $country) = split /, /;
5     $table{$country} = [] unless exists $table{$country};
6     push @{$table{$country}}, $city;
7   }

8   for my $country (sort keys %table) {
9     print "$country: ";
   10     my @cities = @{$table{$country}};
   11     print join ', ', sort @cities;
   12     print ".\n";
   13   }

�����㏍�違�í����壚����ゃ�勰�����������罕������������⓾����障��: 2 茵���勉����� 7 茵���勉�壠�ュ����� 茯㏍�粋昭�����с����若�炊��������罕�膀������障��; ��������� 8 茵���勉����� 13 茵���勉�с����若�帥�� 茹f�������☎����������阪�������障����� ��������������<�壔�������с����㏍�若�������☗�純�勐�������������<����ゃ�������☁�遵�������勉�ŝ�鴻����吾� ��ŝ����<�㋘�潟�鴻�������ゃ�������激�� %table ���篏���������������⓾����障����� �����若�炊�������壚札筝���勉�������ŝ����勉�с��:

%table
        +-------+---+
        |       |   |   +-----------+--------+
        |Germany| *---->| Frankfurt | Berlin |
        |       |   |   +-----------+--------+
        +-------+---+
        |       |   |   +----------+
        |Finland| *---->| Helsinki |
        |       |   |   +----------+
        +-------+---+
        |       |   |   +---------+------------+----------+
        |  USA  | *---->| Chicago | Washington | New York |
        |       |   |   +---------+------------+----------+
        +-------+---+

�����������阪�����荀���障����������� ��������с�������с�˩��荐���勖����������с����⓾�������������障��; ��í�勉������� ��阪����������勉�с�����������?

8   for my $country (sort keys %table) {
9     print "$country: ";
   10     my @cities = @{$table{$country}};
   11     print join ', ', sort @cities;
   12     print ".\n";
   13   }

%table ��奝��絽吾�勉�������激�ャ�с����������������㏍�若�勉�ŝ�鴻�����緇���⓾����������純�若������� ���絽檎�������㏍�若��絲障����⓾�˨�若�������障����� ��ŝ����<�㋘�潟�鴻�� 10 茵���勉�с�����篏帥�������⓾����障����� $table{$country} ��壔�������激�ャ�� $country ��㏍�若�������с����障��; �������� �����勐�純�勰�遵����勰��������絲障�������ŝ����<�㋘�潟�鴻�с����� Use Rule 1 ��奝�������� @{$table{$country}} �� ��������冴�������������c�⓾����障����� 10茵���勉�

@cities = @array;

�����������������ŝ����勉�с��������array ������������������ {$table{$country}} ��������� ��ŝ����<�㋘�潟�鴻�̥舟�����������������⓾����障����� @ ��� Perl ��̹��������篏������������冴��������������腓冴����⓾����障����� ��遵����勉�ŝ�鴻�����緇������������������純�若�������⓾����ゃ�ŝ�������������☁��絽吾���������������� ��阪�������障�����

2 茵���勉����� 7 茵���勉�壩��������罕�膀������⓾�������������с����� ����イ�����障��:

2   while (<>) {
3     chomp;
4     my ($city, $country) = split /, /;
5     $table{$country} = [] unless exists $table{$country};
6     push @{$table{$country}}, $city;
7   }

2 茵���勉����� 4 茵���勉�奝�遵�������純�勐��������緇���⓾����障����� 5 茵���勉�壔����勐�純�������с�˨�������激�ャ�勉�㏍�若�������☗����������⓾����������í��������荀���⓾����障����� ������絖���������⓾����ŝ�������違�������㏍�違�í����� [] 荐�羈� (Make Rule 2) ���篏帥�c�〠�違����� 腥冴�勰�遵�������主�������������≦�����������篏������冴����障��; ��������⓾����ŝ����<�㋘�潟�鴻���������� ��ï����ŝ�㏍�若�˨�祉����������障�����

6茵���勉�奝�遵��������絲上����������������˨�ゃ�潟�鴻����若�˨����障����� $table{$country} ��壔�������с����勐�純�勰�遵����勰��������絲障�������ŝ����<�㋘�潟�鴻�� 篆���������⓾����障����� 6 茵���勉�

push @array, $city;

��勉�������ŝ����勉�с����������違�ŝ����勉�� array ��� {$table{$country}} ��������� ��ŝ����<�㋘�潟�鴻�̥舟�����������c�⓾�������鴻�с����� push ��奝�遵�������������с�������⓾�������������勖��絨障� 菴遵�������障�����

��鴻�㏍�������������鴻����������障����� 5 茵���勉�壚��綽�荀���ŝ�勉�с����������ゃ�������������с����障�����

2   while (<>) {
3     chomp;
4     my ($city, $country) = split /, /;
5   ####  $table{$country} = [] unless exists $table{$country};
6     push @{$table{$country}}, $city;
7   }

%table ��勌賢��̥憜����� $country ��勉�������勉����潟����ŝ�������с��絖���������⓾������� ��違�ŝ����鴻�壔�������障�������� 6 茵���勉�奝�������吾�勉�ŝ����<�㋘�潟�鴻�с����� $table{$country} ��勐�ゃ��羈◐�勉����� �����勰�������� $city �����������激�ャ����障����� ������������$country ��� %table ��勌賢��˨�ŝ�� Greece ��勉�������ŝ�㏍�若�� 篆���������⓾��������篏������������勉�с�����������?

��������� Perl ��с��; ��с�������������㋚�����罩c��������������茵������障����� 絖���������⓾����ŝ����������� Athens �����������激�ャ�������������������勉�с����違����霣冴� ��≦����������������ŝ����勉�������˩�������冴����⓾�������� %table ��˨�ゃ�潟�鴻����若�˨����障��; ��������⓾����������� Athens �����������˨�������激�ャ����障����� ��������� ��ɱ�������劫��(autovivification) �����若�違����障����� Perl ��壔�������激�ャ�勌賢��˨����������勉�㏍�若��絖���������ŝ�����������腆肴����������違�������������激� �����潟����ŝ����ɱ�������˩�������冴����障����� Perl ��壔����ŝ�������������激�ャ�勐�ゃ����������������〠�宴����������c�⓾�������������� ��ャ�c�⓾�������勉�с����違�����腥冴�勰��������篏������冴����⓾�������激�ャ�勌賢��˨��������絲障����� ��ŝ����<�㋘�潟�鴻����ɱ�������˨�ゃ�潟�鴻����若�˨����障����� �����ゃ�������������������˨��Perl��壩�違����ʒ�遵��������篆����������筝�荀�膣���勰�������� 篏������冴����障�����

The Rest

(罧����)

�����������壔����ŝ����� 10% ��勤¼膣違�� 90% ��勐�ñ�����緇�������������膣���������障�����; ��������⓾�������虁¼膣違�� 90% ��������勉�障�障�˨����⓾����������������������с����� 篁���������ŝ����奝��荀���ʒ��������荀���⓾����障�����; ��������˨�����荅括完��� 100% ���菴違�鴻�⓾����� perlref man �����若�吾��������膂≦����̬˛��������������с�������������˨�ŝ�c����с�����������

perlref ��勉����ゃ�í�ゃ����勐江��ゃ�������������⓾�������障��:

  • 篁紙����勉����勉��絲障�������ŝ����<�㋘�潟�鴻��篏���������������������с����障��; ��������˨�壔�鴻�˨�í����∽�違��篁���勉�ŝ����<�㋘�潟�鴻����˨�障����障�����

  • Use Rule 1 ��勌賢��с�������勌賢��˨����������勉�� $aref ��勉������� ��≪����������壔�ŝ�鴻�˨�ï����違�с�������翫����˨�壔�˨�若�ŝ�若����í�宴�������� �����ャ����������������с����障����� �����������違��@$aref ��� @{$aref} �����������с��$$aref[1] �� ${$aref}[1] �����������с����� 紮���������違�������ŝ�勉�с�������違��絽吾�˨�˨�若�ŝ�若����í�宴�������у�蚊����������� 膺���d�������������ŝ����������������障��������

  • 篁ヤ����奝�������勐��絎鴻����潟����若����障�����:

    $aref2 = $aref1;

    ���������������絲障�����篋���ゃ�勉�ŝ����<�㋘�潟�鴻��緇���������障����� ������ $aref1->[23] ���紊���眼����⓾��$aref2->[23] ��� �����с�������ŝ����医����眼����������勉��荀���������с�����������

    �����������潟����若�������˨�壚札筝���勉�������˨����障��

    $aref2 = [@{$aref1}];

    ��������壩�違����ɾ�≦�����������篏������冴����������� [...] 荐�羈����篏帥�c�⓾����障��; ��������⓾��$aref2 ��壩�違����ʒ��������絲障�������ŝ����<�㋘�潟�鴻��篁e�ャ�������障����� ��違����ʒ�������� $aref1 ��˨����c�☗����с����������������勐��絎鴻�˨����c�☗����������������障�����

    ���罕���˨����≦����������激�ャ����潟����若�������˨�壚札筝���勉�������˨����障��

    $href2 = {%{$href1}};
  • 紊���違����ŝ����<�㋘�潟�鴻��篆���������⓾�������������˨��������腆肴����������˨�壔�� ref ��∽�違��篏帥����障����� �����勰�∽�違�壔����勐����違����ŝ����<�㋘�潟�鴻�с�������������˨�夌�����菴������障����� 絎������˨�壔�������<����c�◑�壔����⓾����������激�ャ�ŝ����<�㋘�潟�鴻�с�������� HASH ������ ��������ŝ����<�㋘�潟�鴻�с�������� ARRAY ���菴������障�����

  • ��ŝ����<�㋘�潟�鴻�����絖������勉�������˩戎��c����翫����˨�壔��篁ヤ����勉�������ʋ��絖�������緇���������障��

    ARRAY(0x80f5dec)   or    HASH(0x826afc0)

    �����������勉�������ʋ��絖�������荀������ŝ����違����ŝ����<�㋘�潟�鴻����������c�☗�阪����������������� ��ャ�������������ŝ����с�����������

    �����勤;�憗�勐�壚�������壔��eq ���篋���ゃ� ��ŝ����<�㋘�潟�鴻�������������勉�������с����⓾����������í��������腆肴���������������� 篏帥�������������с����������������������с����� (���������������絽吾�壔�������í�� == ���篁c������� 篏帥����鴻����с�����������)

  • ���絖���������ŝ����<�㋘�潟�鴻�с����������勉�������˩戎��������������с����障����� ���絖���� "foo" �����������ŝ����<�㋘�潟�鴻�������☖戎������������@foo ��吾� �����с�с����������勉��������������篁������������障����� ��������� ��激�潟����ŝ����壔�ŝ����<�㋘�潟�� �����若�違����障����� use strict 'refs' ���絎h����������������˨����c�⓾����≪�壔�激����潟����˨����c� ��馹����綣����莎激�������������翫����������������勖����純��胼�罩≪����������������с����障�����

perlref ��������� perllol ��̬����������������������������������障�����; ��������с�壔�ŝ�鴻����勉�ŝ�鴻�����紊�罨≦����������˨�ゃ����☀¼�����颷違�鴻�������⓾����障����� �����勐����с��perldsc ��̬�������◑�壔����с��������; ��������壔����若�炊�������壔����壔������� (Data Structure Cookbook)��с����������激�ャ�勰����������������勉�������激�ャ�������勌���� �����若�帥�勌戎��������阪����˨�ゃ����⓾�勉�㋘�激�������������障�����

Summary

(��障�����)

�����鴻�⓾�勌査���茲���������若�炊��������綽�荀���������⓾����⓾��Perl��с�勉��������緇������������鴻� ��ŝ����<�㋘�潟�鴻�с����� ��ŝ����<�㋘�潟�鴻����宴����˨�������c�☗����ゃ�勰��荀���ŝ�˨�若�˨����������障��: 篋���ゃ� ��ŝ����<�㋘�潟�鴻�勌�������˨�ゃ����⓾�с��篋���ゃ�壔�ŝ����<�㋘�潟�鴻�勌戎�����˨�ゃ����⓾�с����� �����������勉�˨�若�˨����ャ�c�⓾����障����違�������ŝ�������ŝ����<�㋘�潟�鴻��篏帥�c�☀�����綽�荀���� ��������������勰��荀���ʒ�������勉�祉�������í��茵���������������с����障�����

Credits

篏����: Mark Jason Dominus, Plover Systems (mjd-perl-ref+@plover.com)

�����勤��篋���壩�������� The Perl Journal ( http://www.tpj.com/ ) volume 3, #2 ��̥�糸�眼����障�������� 荐怨檽��緇���☀拶莠������⓾����障�����

�����勉�帥�ゃ����˨�� Understand References Today ��с��������

Distribution Conditions

Copyright 1998 The Perl Journal.

This documentation is free; you can redistribute it and/or modify it under the same terms as Perl itself.

Irrespective of its distribution, all code examples in these files are hereby placed into the public domain. You are permitted and encouraged to use this code in your own programs for fun or for profit as you see fit. A simple comment in the code giving credit would be courteous but is not required.