Skip to content

Latest commit

 

History

History
executable file
·
679 lines (442 loc) · 18.5 KB

perlcompile.pod

File metadata and controls

executable file
·
679 lines (442 loc) · 18.5 KB

NAME

perlcompile - Perl ��潟�潟����ゃ�í�祉����í�潟�鴻�㋘�若�帥�勤В茯

DESCRIPTION

Perl ��壠幻��˨�潟�潟����ゃ�í�������c�⓾����障��: ��純�若�鴻�潟�若����壠�������潟�若�� (罕�������) �� 紊�������������絎�茵������������������ï����������障����� �����若�吾�с�� 5.005 篁ラ�����Perl ��壩����ï�����������罕������� (B) ��� 茯炊�祉�с�������遵�������������≪�吾�ャ�若�˨����������̹��絽���������⓾�������� �����勉����若�˨�� Perl �����������ゃ����c����ɱ��茵������<�ゃ�˨�˨�潟�潟����ゃ�˨�с����� C ��勉�潟�若���� 紊������������≪�吾�ャ�若�˨�勉�������ʋ�������ŭ梢��í�ŝ�⓾�若����c�ŝ����c��荐�菴違�������勉� ��������������⓾����障�����

B ��≪�吾�ャ�若�˨�壩����������˨�≪�壔�祉�鴻���������������櫝�純�˨����������勌����勉�≪�吾�ャ�若� (�����������壔����潟�����"back ends") ��壔����勖�������������ñ�������障����� ��障�����篋咲�����������������茯㏍�帥����������阪�������������勉����������障����� �����勌����勛�◒����������⓾�壔�泣����˨�若����潟�勛�����������紊���違����í����т戎�����������⓾����������ŝ�í� ��壔�㏍�鴻�ŝ����<�㋘�潟�鴻����������������勉�̥�������������⓾����障����� ��障��������������罕������̹�≪����⓾�潟�若����勉����с����壔�˨����������������⓾����障����� ������筝���ゃ�勉�������壔����潟����������⓾�潟�若�������顔�����臂������顄㏍�帥�������� Perl ��純�若�鴻������� �����阪�������障�����

��������勛�勛����� Perl �����㏍�違�í����◐��箴<�� C 荐�茯���勉�潟�若��������箴������������ゃ����c���� 絎�茵��櫝�純����<�ゃ�˨�˨�������������с����c����勉�с����㋛�ヤ�������潟�潟����ゃ�˨�壔����ŝ����勉�с�������� �憜�� B ��≪�吾�ャ�若�˨�壔����潟�潟����ゃ�í����������☎�ャ�������⓾����障����� �����勉�潟�潟����ゃ�í�壩③腆冴�̬�������������í�潟�鴻�㋘�若�帥����ゃ�潟�鴻����壔�帥�̬�������с�������� 篋冴����� Perl ��˨�ゃ�潟�鴻����壔�帥����若�˨�с�壔�ŝ����潟�潟����ゃ�í�ŝ����激�с�潟�� �����c�⓾�祉�������������c�⓾����障����� �����ŝ����˨�壚�������с����障�����?

�����勖����吾�� Perl ��潟�潟����ゃ�í�˨�ゃ����☀В茯㋘����⓾����障��: Perl ��潟�潟����ゃ�í�� 罕���������⓾�������≪�吾�ャ�若�˨����������壔����潟����≪�吾�ャ�若�˨�勌戎�����鴻����������⓾������� ��í�勉�������ɱ�馹���������������с�����

Layout

(罕����)

��潟�潟����ゃ�í�勉�������壔����潟����� B:: 篁ヤ�������ャ�c�⓾����⓾��(�����ŝ����������潟�潟����ゃ� ��ñ�◑�����篏帥����с��������) �����㏍�潟�������潟����� O ��≪�吾�ャ�若�˨�с�����

篁ヤ����夌�ャ�c�⓾�������鴻�����荀���ŝ�������壔����潟����勉�ŝ�鴻����с�������������� 0 (篁�緇� 絎�茖���������������勉�≪�⓾����í�ゃ�潟�勖侊���) ������10 (�����������違�� �����c����������⓾��薊������障��) ��勉�鴻����若�帥�合�ɱ垩�壚��罐㊨�画��綺⓾��茵������⓾����障��:

B::Lint

�����ŝ����勉�潟�若����勉�̥����������������������������域⑥��������障����� ��鴻����若�帥��: 6 (��ï��������篏������障�������������������������ŝ�≪����������с����壔����障�����)���

B::Deparse

�����í�若�����������筝�莢˨����⓾��������羈���������ŝ�������� Perl ��純�若�鴻�勐��罕�������茵������障����� ��鴻����若�帥��: 8 (��祉�惹③腆冴�����篏������障����������������ゃ����勌�������㏍�ŝ����勉� 罨������⓾����障��)���

B::Xref

紊���違����泣����˨�若����潟�勐㐂荐����篏睡�������怨�������障����� ��鴻����若�帥��: 8 (��������������障����������障����������ゃ����勖�号訓��������違����������障��)���

Using The Back Ends

(��������壔����潟�����篏帥��)

篁ヤ����勛����с�壔�í�勉�������˨�潟�潟����ゃ�í�勉�������壔����潟�������ñ��������������茹hą�����障����� �����������壔��������������綺⓾�勰����˩研�����с�������勉�с��������絎�絎������⓾���� 罎�荐若�������⓾�������������壔����潟�������������̬В茯㋘�����������絎�薑������т��絎������ ��������壔����潟��������緇���̬В茯㋘����障�����

O ��≪�吾�ャ�若�˨�� -c �����í�違�� Perl ���羝<����������ц�ɱ�������������鴻�˨�ŝ����� Perl ��壔�潟�若�����絎�茵���������˨�潟�潟����ゃ�˨��������茵������障����� ��������������⓾�勉�������壔����潟�����篁ヤ����勉�������̬;腓冴����������宴�с��:

myperlprogram syntax OK

�����鴻�⓾�勐�阪��������腴���c�⓾����勉�������ʃ;腓冴����ŝ�������障�����

The Cross Referencing Back End

(��壔�㏍�鴻�ŝ����<�㋘�潟�鴻�勉�������壔����潟��)

��壔�㏍�鴻�ŝ����<�㋘�潟�鴻��篏������������������壔����潟�� (B::Xref) ��壠����違�勐㐂荐���� ��泣����˨�若����潟�勌戎���羈���ŝ�í�勐��������茵���c����㋘����若�����篏���������障����� 箴������違��篁ヤ����� Perl ������罌宴�������⓾����� pod2man �����㏍�違�í����勉�㋘����若����с��:

Subroutine clear_noremap
  Package (lexical)
    $ready_to_print   i1069, 1079
  Package main
    $&                1086
    $.                1086
    $0                1086
    $1                1087
    $2                1085, 1085
    $3                1085, 1085
    $ARGV             1086
    %HTML_Escapes     1085, 1085

��������� clear_noremap ��х�������������⓾�����紊���違��茵◐ず�����⓾����障����� $ready_to_print ���������紊���違�� my()(��㋘�㏍�激�˨��) 紊���違�с��1069 茵���勉� (my() ��у㐂荐����������)絨���ャ��������1079 茵���勉�т戎��������⓾����障����� main ��������宴�若�吾�� $& ���������紊���違�� 1086 茵���勉�т戎��������⓾����������ŝ�í�с�����

茵���ɱ垩�壚札筝���勖・��㊧�����篌眼�c�☗�阪����������障��:

i

��㋘�㏍�激�˨��紊���違����������� (my() ��у㐂荐����������) 絨���ャ�����������

&

��泣����˨�若����潟�障����壔�<�純�������若�喝�冴�����

s

��泣����˨�若����潟��絎�臂í�����������

r

�����í�若�����������絎�臂í�����������

��壔�㏍�鴻�ŝ����<�㋘�潟�鴻��篏������������˨����������������������ŝ�ŝ����激�с�潟�������⓾�㋘����若����� 茲���違�勉����<�ゃ�˨�������蚊����☖��絖���������������������勉����������障����� ������������ myperlprogram ��勉�㋘����若����� report �����<�ゃ�˨�˩��絖���������˨��:

$ perl -MO=Xref,-oreport myperlprogram

The Decompiling Back End

(�����潟�潟����ゃ�˨�������壔����潟��)

Deparse ��������壔����潟����壔����ŝ����� Perl ��純�若�鴻�� Perl ��潟�潟����ゃ�í�˨�í�勉������� �����若�鴻��������������茵◐ず�����障����� �����勐�阪����虁˛��帥�������������������翫就�����������������с����障����� ��堺�㋜����ŭ戎���羈���壚札筝���勰�������с��:

$ perl -MO=Deparse myperlprogram

��阪�����荀����������Perl �����潟�若�������í�勉����������翫就�����鴻����� ��������c�⓾����ŝ����������������������с����������� �����ŝ����壔�潟�若����勉����㏍����壔�������̬�ɱ����ф�壕����������������˨�ŝ����с����������� �����������������勌��罐㏍�壚札筝���勌��茵���������у櫝�純�с��:

$ perl -MO=Deparse -e '$op=shift||die "usage: $0
code [...]";chomp(@ARGV=<>)unless@ARGV; for(@ARGV){$was=$_;eval$op;
die$@ if$@; rename$was,$_ unless$was eq $_}'
-e syntax OK
$op = shift @ARGV || die("usage: $0 code [...]");
chomp(@ARGV = <ARGV>) unless @ARGV;
foreach $_ (@ARGV) {
    $was = $_;
    eval $op;
    die $@ if $@;
    rename $was, $_ unless $was eq $_;
}

�����潟�潟����ゃ�í�夌�������������潟�若�����絲障�������ŝ����激�с�潟�������c�⓾����障����� 箴������違����ゃ�潟����潟����勰����� (筝�菴違�勉��������) 4 ������ 2 ���紊���眼�с����障��:

$ perl -MO=Deparse,-si2 myperlprogram

-p ��ŝ����激�с�潟�壩�勰�������ュ櫝�純�ŝ����������˨����c�������水�ャ����障��:

$ perl -MO=Deparse -e 'print "Hello, world\n"'
-e syntax OK
print "Hello, world\n";
$ perl -MO=Deparse,-p -e 'print "Hello, world\n"'
-e syntax OK
print("Hello, world\n");

�����勌����勉����í�若����������ŝ����激�с�潟�� B::Deparse ��������с����⓾��������������

The Lint Back End

(Lint ��������壔����潟��)

Lint ��������壔����潟�� (B::Lint) ��虁�壔����ŝ����鴻�帥�ゃ�˨�勉����㏍�違�í�����茯炊�祉����障����� �����������㏍�違�í����勰�������c����鴻�帥�ゃ�˨�壚����勉����㏍�違�í����勐⑥膺����篆���蚊����障��; �����c�⓾�í�勉�������ŭ����˨�ゃ����☀⑥��������������ŝ����激�с�潟�ц┃絎���с����障�����

��鴻�帥�ゃ�˨����с����˨�若����純�若�鴻�潟�若�����絲障����☗��茵���������˨��:

$ perl -MO=Lint myperlprogram

��潟�潟����㏍�鴻����勉����с����壔����ɱ��臂í�勉�泣����˨�若����潟����≦�鴻�˨�������˨��:

$ perl -MO=Lint,-context,-undefined-subs myperlprogram

�����勌����勉�ŝ����激�с�潟�˨�ゃ����⓾�� B::Lint ��������с����⓾��������������

Module List for the Compiler Suite

(��潟�潟����ゃ�í�̹�≪�������≪�吾�ャ�若�˨�勉�ŝ�鴻��)

B

�����勉�≪�吾�ャ�若�˨�� Perl �����㏍�違�í�������勖��罕���������������� (Java ��勛�◑����с�壔����ŝ����㋘�壔�激�с�潟��������) ��≪�吾�ャ�若�˨�с��Perl �����㏍�違�í����� �����勐��������茯帥�鴻����������������˨����障����� ��������壔����潟����≪�吾�ャ�若�˨�壔�潟�潟����ゃ�˨��������罕���������˨�≪�壔�祉�鴻�����罘���純�����箴������障����� ��������壔����潟����≪�吾�ャ�若�˨�勉�⓾�若�吟�若�� B ��̹�≪�����腟�薑���壠����������障��������

O

�����勉�≪�吾�ャ�若�˨�壔�潟�潟����ゃ�í�勉�������壔����潟����勉����㏍�潟�������潟����≪�吾�ャ�若�˨�с����� ���絽吾�с�壚札筝���勉�������ʋ�������у�ñ�������障��:

$ perl -MO=Deparse myperlprogram

��������� use O 'Deparse' ��������ŝ����勉����㏍�違�í�������˨�障����⓾�������������˨����障�����

B::Concise

�����勉�≪�吾�ャ�若�˨�夌亜羹���� (���������絎�������) Perl 罕����������茵◐ず�����障����� �����勉�≪�吾�ャ�若�˨�勐�阪����� B::Terse ��� B::Debug �����������˨�鴻�帥����ゃ�阪櫝�純�с�� (��障����������������������ャ�㋘�若������������������櫝�純�с��)��� �����勉�≪�吾�ャ�若�˨�壔�������壔����潟�������吾����⓾�����篋冴�����Perl ��勐�����罕�������絖⓾�潟�����篋冴� ��������с����� 綛喝�������ŝ����㏍�違�í����˨�壠醜��̥�������ŝ����с�����������

B::Debug

�����勉�≪�吾�ャ�若�˨�� Perl 罕����������荅括完��� STDOUT ��˨����潟�������障����� �����勉�≪�吾�ャ�若�˨�壔�������壔����潟�������吾����⓾�����篋冴�� Perl ��勐�����罕�������絖⓾�潟�����篋冴� ��������с����� 綛喝�������ŝ����㏍�違�í����˨�壠醜��̥�������ŝ����с�����������

B::Deparse

�����勉�≪�吾�ャ�若�˨�� Perl ��潟�若����勉�潟�潟����ゃ�˨��������罕�������������箴������障����� �����勉�≪�吾�ャ�若�˨�壚��篋冴�勖�吾�������潟�若����������������医��罕���������������������⓾�����篋冴� 綵合����ゃ�с����������� ��障����ɱ����勉�潟�若�����膓咲�������阪����������勉�˨��綵合����<�障����� 篏睡��羈���勤¼膣違�� "The Decompiling Back End" ��������с����⓾��������������

B::Lint

�����勉�≪�吾�ャ�若�˨�壔�潟�潟����ゃ�˨����������純�若�鴻�潟�若����������������障��; �������� 筝������勌査��奝�h�蚊��腓冴�������勉�勉��茘☗�������冴����祉�ð�ŝ�������勉�с�壔�ŝ�������勉�с����� 箴������違����������� scalar(@array) ��������������ŝ����鴻�˨�í�潟�潟����㏍�鴻���������� 篏睡�������������������勉�� Lint ���茘���ャ�с����������勉�с����� 篏睡��羈���勤¼膣違�� "The Lint Back End" ��������с����⓾��������������

B::Showlex

�����勉�≪�吾�ャ�若�˨�奝�∽�医����������潟����<�ゃ�������т戎�����������⓾����� my() �� 絎h�����������紊���違��茵◐ず�����障����� myperlprogram �����у��臂í�������� mysub() ��泣����˨�若����喝����т戎�����������⓾����� my() ��у㐂荐����������紊���違�����緇���������˨�壚札筝���勉�������˨����障��:

$ perl -MO=Showlex,mysub myperlprogram

myperlprogram �����т戎�����������⓾����� my() ��у㐂荐����������紊���違�����緇���������˨� 篁ヤ����勉�������˨����障��:

$ perl -MO=Showlex myperlprogram

[BROKEN]

B::Terse

�����勉�≪�吾�ャ�若�˨�壩����������勐��絎鴻����阪�������障��������B::Debug ������緇���������� �����宴�壠����ŝ����с����� 罸�莠���勉�������勌����������� print "Hello, world." ��˨�ゃ����� B::Debug ��� 96 茵������ �����宴����阪�������障��������B::Terse ��� 6 茵���������阪�������障��������

�����勉�≪�吾�ャ�若�˨�虁�ɱ����勉����㏍�違�í����勉�������壔����潟�������吾����⓾�����篋阪����� Perl �� ��������˨�ゃ����☗⑥��若����������⓾�����篋冴��綵合����ゃ�с����������� 綛喝�������ŝ����㏍�違�í����˨�壠醜��̥�������ŝ����с�����������

B::Xref

�����勉�≪�吾�ャ�若�˨�壠����違����泣����˨�若����潟�������㏍�違�í�������т戎�����������������í�若����������� ��≪�吾�ャ�若�˨�勉�㏍�若����������������勐�贋����˨�ゃ����⓾�㋘����若�������阪�������障����� 篏睡��羈���勤¼膣違�� "The Cross Referencing Back End" ��������с����⓾��������������

KNOWN PROBLEMS

(��∝�ャ�勌����桁��)

BEGIN{} �����㏍����壔�壔�潟�若�������潟�潟����ゃ�˨��������罧級����у��茵���������⓾����障����障����� �����<�ゃ�˨����������������������若�帥����若�号・膓������������������������������c����� BEGIN{} �����с�勐����◐�倶����勐����������壩③���������篏������障�������� ���������絲上����������˨��Perl ��˨�� INIT{} �����㏍����壩����������������障��; �����勖�������壔����ŝ����勉�潟�若�������潟�潟����ゃ�˨�����������������絎�茵��������������� ��☎����������障����� 絎�茵�������������綺�: BEGIN{} �����㏍����壔��(��潟�潟����ゃ�í�勉�������壔����潟�������������☎�倶����� 篆�絖���с����障��) ���INIT{}�����㏍����壔����潟�若����勐��茵����END{}�����㏍����壔��

AUTHOR

�����勉����㏍�ャ�<�潟����� Nathan Torkington ��˨����c�〠�吾���������憜���� perl5-porters ��勉�<�若�ŝ�潟�違�ŝ�鴻�� perl5-porters@perl.org ��˨����c� 篆�絎���������⓾����障�����