ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

OnWorks favicon

perlrun - ອອນລາຍໃນຄລາວ

ເປີດໃຊ້ perlrun ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ perlrun ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


perlrun - ວິທີການປະຕິບັດນາຍພາສາ Perl

ສະຫຼຸບສັງລວມ


perl [ -sTtuUWX ] [ -hv ] [ -V[:configvar] ]
[ -cw ] [ -d[t][:ດີບັກເກີ] ] [ -D[ຕົວເລກ/ລາຍຊື່] ]
[ -pna ] [ -Fຮູບແບບ ] [ -l[ແປດ] ] [ -0[ເລກແປດ/ເລກຖານສິບຫົກ] ]
[ -Idir ] [ -m[-]ໂມດູນ ] [ -M[-]'ໂມດູນ...' ] [ -f ] [ -C [ຕົວເລກ/ລາຍຊື່] ]
[ -S ] [ -x[dir] ] [ -i[ການຂະຫຍາຍ] ]
[ [-e|-E] 'ຄໍາສັ່ງ' ] [ -- ] [ ໄຟລ໌ໂຄງການ ] [ ການໂຕ້ຖຽງ ] ...

ລາຍລະອຽດ


ວິທີການປົກກະຕິທີ່ຈະດໍາເນີນການໂຄງການ Perl ແມ່ນໂດຍການເຮັດໃຫ້ມັນສາມາດປະຕິບັດໄດ້ໂດຍກົງ, ຫຼືອື່ນໆໂດຍ
ການຖ່າຍທອດຊື່ຂອງໄຟລ໌ຕົ້ນສະບັບເປັນການໂຕ້ຖຽງຢູ່ໃນເສັ້ນຄໍາສັ່ງ. (ແບບໂຕ້ຕອບ
ສະພາບແວດລ້ອມ Perl ແມ່ນເປັນໄປໄດ້ - ເບິ່ງ perldebug ສໍາລັບລາຍລະອຽດກ່ຽວກັບວິທີການເຮັດແນວນັ້ນ.) ຕາມ
ການເລີ່ມຕົ້ນ, Perl ຊອກຫາໂຄງການຂອງທ່ານໃນຫນຶ່ງໃນສະຖານທີ່ຕໍ່ໄປນີ້:

1. ກໍານົດສາຍໂດຍສາຍຜ່ານ -e or -E ສະຫຼັບຢູ່ໃນເສັ້ນຄໍາສັ່ງ.

2. ບັນຈຸຢູ່ໃນໄຟລ໌ທີ່ລະບຸໄວ້ໂດຍຊື່ໄຟລ໌ທໍາອິດໃນແຖວຄໍາສັ່ງ. (ໃຫ້ສັງເກດວ່າ
ລະບົບທີ່ຮອງຮັບ "#!" notation ຮຽກຮ້ອງນາຍພາສາດ້ວຍວິທີນີ້. ເບິ່ງ "ສະຖານທີ່ຂອງ
Perl".)

3. ຜ່ານ implicitly ຜ່ານມາດຕະຖານປ້ອນຂໍ້ມູນ. ນີ້ເຮັດວຽກພຽງແຕ່ຖ້າບໍ່ມີຊື່ໄຟລ໌
arguments--ເພື່ອຜ່ານ arguments ໃຫ້ກັບໂປຣແກຣມທີ່ອ່ານ STDIN ທ່ານຕ້ອງລະບຸ "-" ຢ່າງຊັດເຈນ.
ສໍາລັບຊື່ໂຄງການ.

ດ້ວຍວິທີການ 2 ແລະ 3, Perl ເລີ່ມວິເຄາະໄຟລ໌ປ້ອນຂໍ້ມູນຕັ້ງແຕ່ຕົ້ນ, ເວັ້ນເສຍແຕ່ວ່າທ່ານໄດ້
ລະບຸ a -x switch, ໃນກໍລະນີນີ້ມັນຈະສະແກນສໍາລັບແຖວທໍາອິດທີ່ເລີ່ມຕົ້ນດ້ວຍ "#!" ແລະ
ມີຄໍາວ່າ "perl", ແລະເລີ່ມຕົ້ນຢູ່ທີ່ນັ້ນແທນ. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການແລ່ນ a
ໂຄງ​ການ​ທີ່​ຝັງ​ຢູ່​ໃນ​ຂໍ້​ຄວາມ​ຂະ​ຫນາດ​ໃຫຍ່​. (ໃນ​ກໍ​ລະ​ນີ​ນີ້​ທ່ານ​ຈະ​ຊີ້​ບອກ​ວ່າ​ການ​ສິ້ນ​ສຸດ​ຂອງ​
ໂປຣແກຣມທີ່ໃຊ້ໂທເຄັນ "__END__".)

The "#!" ເສັ້ນຖືກກວດສອບສະຫຼັບສະຫຼັບຢູ່ສະເໝີ ເນື່ອງຈາກເສັ້ນກຳລັງຖືກວິເຄາະ. ດັ່ງນັ້ນ, ຖ້າ
ທ່ານຢູ່ໃນເຄື່ອງຈັກທີ່ອະນຸຍາດໃຫ້ພຽງແຕ່ຫນຶ່ງການໂຕ້ຖຽງກັບ "#!" ເສັ້ນ, ຫຼືຮ້າຍແຮງກວ່າເກົ່າ, ບໍ່ແມ່ນ
ເຖິງແມ່ນວ່າຈະຮັບຮູ້ "#!" ເສັ້ນ, ທ່ານຍັງສາມາດໄດ້ຮັບພຶດຕິກໍາການສະຫຼັບທີ່ສອດຄ່ອງໂດຍບໍ່ຄໍານຶງເຖິງ
Perl ຖືກເອີ້ນແນວໃດ, ເຖິງແມ່ນວ່າ -x ຖືກນໍາໃຊ້ເພື່ອຊອກຫາຈຸດເລີ່ມຕົ້ນຂອງໂຄງການ.

ເນື່ອງຈາກວ່າໃນປະຫວັດສາດບາງລະບົບປະຕິບັດການໄດ້ຕັດການຕີຄວາມຫມາຍຂອງແກ່ນຢ່າງງຽບໆ
"#!" ເສັ້ນຫຼັງຈາກ 32 ຕົວອັກສອນ, ບາງສະຫຼັບອາດຈະຖືກສົ່ງຜ່ານໃນເສັ້ນຄໍາສັ່ງ, ແລະ
ບາງຄົນອາດຈະບໍ່; ເຈົ້າສາມາດໄດ້ຮັບ "-" ໂດຍບໍ່ມີຕົວອັກສອນຂອງມັນ, ຖ້າທ່ານບໍ່ລະມັດລະວັງ. ເຈົ້າ
ອາດຈະຕ້ອງການໃຫ້ແນ່ໃຈວ່າສະວິດທັງໝົດຂອງເຈົ້າຕົກກ່ອນ ຫຼືຫຼັງຈາກນັ້ນ
ຂອບເຂດ 32 ຕົວອັກສອນ. ສະວິດສ່ວນໃຫຍ່ບໍ່ສົນໃຈວ່າພວກມັນຈະຖືກປະມວນຜົນຫຼືບໍ່
ຊໍ້າຊ້ອນ, ແຕ່ການໄດ້ຮັບ "-" ແທນທີ່ຈະເປັນສະຫຼັບທີ່ສົມບູນສາມາດເຮັດໃຫ້ Perl ພະຍາຍາມ
ປະຕິບັດການປ້ອນຂໍ້ມູນມາດຕະຖານແທນທີ່ຈະເປັນໂຄງການຂອງທ່ານ. ແລະບາງສ່ວນ -I ສະຫຼັບຍັງສາມາດເຮັດໃຫ້ເກີດ
ຜົນໄດ້ຮັບຄີກ.

ບາງສະຫຼັບບໍ່ສົນໃຈຖ້າພວກມັນຖືກປຸງແຕ່ງສອງຄັ້ງ, ຕົວຢ່າງການປະສົມຂອງ -l ແລະ -0.
ວາງສະວິດທັງໝົດຫຼັງຈາກຂອບເຂດ 32 ຕົວອັກສອນ (ຖ້າມີ), ຫຼືປ່ຽນແທນ.
ການນໍາໃຊ້ຂອງ -0ຕົວເລກ ໂດຍ "BEGIN{ $/ = "\0digits"; }".

parsing ຂອງ "#!" ປຸ່ມສະຫຼັບເລີ່ມຢູ່ບ່ອນໃດກໍໄດ້ "perl" ຖືກກ່າວເຖິງໃນແຖວ. ໄດ້
ລໍາດັບ "-*" ແລະ "-" ແມ່ນຖືກລະເລີຍໂດຍສະເພາະເພື່ອໃຫ້ທ່ານສາມາດ, ຖ້າທ່ານເປັນດັ່ງນັ້ນ.
inclined, ເວົ້າ

#!/ ຖັງ / sh
#! -*-perl-*-
eval 'exec perl -x -wS $0 ${1+"$@"}'
ຖ້າ 0;

ເພື່ອໃຫ້ Perl ເບິ່ງ -p ສະຫຼັບ.

A trick ທີ່ຄ້າຍຄືກັນກ່ຽວຂ້ອງກັບການ ປະມານ ໂຄງການ, ຖ້າທ່ານມີມັນ.

#!/usr/bin/env perl

ຕົວຢ່າງຂ້າງເທິງໃຊ້ເສັ້ນທາງພີ່ນ້ອງກັບນາຍພາສາ perl, ລຸ້ນໃດກໍ່ຕາມ
ທໍາອິດຢູ່ໃນເສັ້ນທາງຂອງຜູ້ໃຊ້. ຖ້າທ່ານຕ້ອງການສະບັບສະເພາະຂອງ Perl, ເວົ້າວ່າ, perl5.14.1, ທ່ານ
ຄວນວາງມັນໂດຍກົງໃສ່ "#!" ເສັ້ນ​ທາງ​ຂອງ​ເສັ້ນ​.

ຖ້າ "#!" ເສັ້ນບໍ່ມີຄໍາວ່າ "perl" ຫຼືຄໍາວ່າ "indir" ໂຄງການທີ່ມີຊື່
ຫຼັງຈາກ "#!" ຖືກປະຕິບັດແທນທີ່ຈະເປັນນາຍພາສາ Perl. ນີ້ແມ່ນແປກເລັກນ້ອຍ, ແຕ່
ມັນຊ່ວຍຄົນຢູ່ໃນເຄື່ອງຈັກທີ່ບໍ່ໄດ້ເຮັດ "#!", ເພາະວ່າພວກເຂົາສາມາດບອກໂຄງການວ່າພວກເຂົາ
SHELL ແມ່ນ /usr/bin/perl, ແລະ Perl ຫຼັງຈາກນັ້ນຈະສົ່ງໂຄງການໄປຫານາຍພາສາທີ່ຖືກຕ້ອງ
ສໍາ​ລັບ​ພວກ​ເຂົາ.

ຫຼັງຈາກຊອກຫາໂຄງການຂອງທ່ານ, Perl ລວບລວມໂຄງການທັງຫມົດເປັນແບບຟອມພາຍໃນ. ຖ້າ
ມີຂໍ້ຜິດພາດໃນການລວບລວມຂໍ້ມູນ, ການປະຕິບັດໂຄງການບໍ່ໄດ້ພະຍາຍາມ. (ນີ້​ແມ່ນ
ບໍ່ເຫມືອນກັບສະຄຣິບ shell ທົ່ວໄປ, ເຊິ່ງອາດຈະດໍາເນີນການຜ່ານທາງສ່ວນຫນຶ່ງກ່ອນທີ່ຈະຊອກຫາ syntax
ຄວາມ​ຜິດ​ພາດ​.)

ຖ້າໂຄງການຖືກຕ້ອງ syntactically, ມັນຈະຖືກປະຕິບັດ. ຖ້າໂຄງການແລ່ນໄປໃນຕອນທ້າຍຂອງ
ໂດຍບໍ່ມີການກົດແປ້ນພິມ ອອກຈາກ () or ຕາຍ ຜູ້ປະກອບການ, implicit ການທ່ອງທ່ຽວ(0​) ແມ່ນ​ສະ​ຫນອງ​ໃຫ້​ເພື່ອ​ຊີ້​ບອກ​
ສຳເລັດຜົນ.

#! ແລະ ການອ້າງອີງ on ບໍ່ແມ່ນ Unix ລະບົບ
Unix ຂອງ "#!" ເຕັກນິກສາມາດຖືກຈໍາລອງໃນລະບົບອື່ນໆ:

OS / 2
ເອົາໃຈໃສ່

extproc perl -S -your_switches

ເປັນແຖວທຳອິດໃນໄຟລ໌ "*.cmd" (-S ເນື່ອງຈາກຂໍ້ຜິດພາດໃນການຈັດການ 'extproc' ຂອງ cmd.exe).

MS-DOS
ສ້າງໄຟລ໌ batch ເພື່ອດໍາເນີນໂຄງການຂອງທ່ານ, ແລະກໍານົດມັນຢູ່ໃນ "ALTERNATE_SHEBANG" (ເບິ່ງທີ່
dosish.h ໄຟລ໌ໃນການແຈກຢາຍແຫຼ່ງສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ).

Win95/NT
ການຕິດຕັ້ງ Win95/NT, ເມື່ອໃຊ້ຕົວຕິດຕັ້ງ ActiveState ສໍາລັບ Perl, ຈະດັດແປງ
ທະບຽນເພື່ອເຊື່ອມໂຍງກັບ pl ສ່ວນຂະຫຍາຍກັບນາຍພາສາ perl. ຖ້າທ່ານຕິດຕັ້ງ
Perl ໂດຍວິທີອື່ນ (ລວມທັງການກໍ່ສ້າງຈາກແຫຼ່ງ), ທ່ານອາດຈະຕ້ອງດັດແປງ
ລົງທະບຽນຕົວທ່ານເອງ. ໃຫ້ສັງເກດວ່ານີ້ຫມາຍຄວາມວ່າທ່ານບໍ່ສາມາດບອກຄວາມແຕກຕ່າງລະຫວ່າງ
ໂຄງການ Perl ທີ່ສາມາດປະຕິບັດໄດ້ແລະໄຟລ໌ຫ້ອງສະຫມຸດ Perl.

VMS Put

$ perl -mysw 'f$env("ຂັ້ນຕອນ")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' !
$exit++ + ++$status != 0 ແລະ $exit = $status = undef;

ຢູ່ເທິງສຸດຂອງໂຄງການຂອງເຈົ້າ, ບ່ອນທີ່ -mysw ມີການປ່ຽນເສັ້ນຄໍາສັ່ງໃດໆທີ່ທ່ານຕ້ອງການຜ່ານ
ໄປ Perl. ໃນປັດຈຸບັນທ່ານສາມາດເອີ້ນໂຄງການໂດຍກົງ, ໂດຍການເວົ້າວ່າ "ໂຄງການ perl", ຫຼືເປັນ
ຂັ້ນຕອນ DCL, ໂດຍການເວົ້າ @program (ຫຼື implicitly ຜ່ານ DCL$PATH ໂດຍພຽງແຕ່ໃຊ້ຊື່
ຂອງໂຄງການ).

incantation ນີ້ແມ່ນເປັນພຽງເລັກນ້ອຍຫຼາຍທີ່ຈະຈື່, ແຕ່ Perl ຈະສະແດງມັນສໍາລັບທ່ານຖ້າຫາກວ່າທ່ານ
ເວົ້າວ່າ "perl "-V:startperl".

ນາຍແປພາສາຄໍາສັ່ງກ່ຽວກັບລະບົບທີ່ບໍ່ແມ່ນ Unix ມີແນວຄວາມຄິດທີ່ແຕກຕ່າງກັນຫຼາຍກ່ຽວກັບການອ້າງອີງກ່ວາ Unix
ຫອຍ. ທ່ານຈະຕ້ອງຮຽນຮູ້ລັກສະນະພິເສດໃນຕົວແປຄໍາສັ່ງຂອງເຈົ້າ ("*", "\"
ແລະ """ ແມ່ນທົ່ວໄປ) ແລະວິທີການປົກປ້ອງຊ່ອງຫວ່າງແລະຕົວອັກສອນເຫຼົ່ານີ້ເພື່ອແລ່ນເສັ້ນດຽວ
(ເບິ່ງ -e ຂ້າງລຸ່ມນີ້).

ໃນບາງລະບົບ, ທ່ານອາດຈະຕ້ອງປ່ຽນລາຄາດຽວໄປຫາຄູ່, ເຊິ່ງເຈົ້າຕ້ອງ ບໍ່
ເຮັດໃນລະບົບ Unix ຫຼື Plan 9. ທ່ານອາດຈະຕ້ອງປ່ຽນ % ດຽວເປັນ %%.

ຍົກ​ຕົວ​ຢ່າງ:

# Unix
perl -e 'ພິມ "ສະບາຍດີໂລກ\n"'

# MS-DOS, ແລະອື່ນໆ.
perl -e "ພິມ \"ສະບາຍດີໂລກ\n\""

# VMS
perl -e "ພິມ ""ສະບາຍດີໂລກ\n"""

ບັນຫາແມ່ນວ່າບໍ່ມີອັນໃດແມ່ນເຊື່ອຖືໄດ້: ມັນຂຶ້ນກັບຄໍາສັ່ງແລະມັນແມ່ນທັງຫມົດ
ເປັນໄປໄດ້ທັງສອງບໍ່ໄດ້ເຮັດວຽກ. ຖ້າ 4DOS ແມ່ນ shell ຄໍາສັ່ງ, ນີ້ອາດຈະເຮັດວຽກດີກວ່າ:

perl -e "ພິມ "ສະບາຍດີໂລກ\n ""

CMD.EXE ໃນ Windows NT ຫຼຸດການທໍາງານຂອງ Unix ມາດຕະຖານຫຼາຍໃນເວລາທີ່ບໍ່ມີໃຜຢູ່
ຊອກຫາ, ແຕ່ພຽງແຕ່ພະຍາຍາມຊອກຫາເອກະສານສໍາລັບກົດລະບຽບການອ້າງອີງຂອງມັນ.

ບໍ່ມີການແກ້ໄຂທົ່ວໄປສໍາລັບສິ່ງທັງຫມົດນີ້. ມັນເປັນພຽງແຕ່ລັງກິນອາຫານ.

ສະ​ຖານ​ທີ່ of Perl
ມັນອາດຈະເບິ່ງຄືວ່າຈະແຈ້ງ, ແຕ່ Perl ແມ່ນເປັນປະໂຫຍດພຽງແຕ່ໃນເວລາທີ່ຜູ້ໃຊ້ສາມາດຊອກຫາມັນໄດ້ຢ່າງງ່າຍດາຍ. ເມື່ອ​ໃດ​
ເປັນໄປໄດ້, ມັນດີສໍາລັບທັງສອງ /usr/bin/perl ແລະ /usr/local/bin/perl ເປັນ symlinks ກັບ
ຄູ່ຕົວຈິງ. ຖ້າບໍ່ສາມາດເຮັດໄດ້, ຜູ້ເບິ່ງແຍງລະບົບໄດ້ຮັບການຊຸກຍູ້ຢ່າງແຂງແຮງ
ເອົາ (symlinks ກັບ) perl ແລະເຄື່ອງໃຊ້ທີ່ມາພ້ອມກັບມັນເຂົ້າໄປໃນໄດເລກະທໍລີທີ່ພົບທົ່ວໄປ
ຕາມເສັ້ນທາງຂອງຜູ້ໃຊ້, ຫຼືຢູ່ໃນສະຖານທີ່ທີ່ຊັດເຈນແລະສະດວກອື່ນໆ.

ໃນເອກະສານນີ້, " #!/usr/bin/perl"ຢູ່ໃນແຖວທໍາອິດຂອງໂຄງການຈະຢືນຢູ່ໃນ
ສໍາລັບວິທີການໃດກໍ່ຕາມເຮັດວຽກຢູ່ໃນລະບົບຂອງທ່ານ. ທ່ານໄດ້ຖືກແນະນໍາໃຫ້ໃຊ້ເສັ້ນທາງສະເພາະຖ້າທ່ານ
ເປັນຫ່ວງເປັນໄຍກ່ຽວກັບສະບັບສະເພາະ.

#!/usr/local/bin/perl5.14

ຫຼືຖ້າຫາກວ່າທ່ານພຽງແຕ່ຕ້ອງການທີ່ຈະດໍາເນີນການຢ່າງຫນ້ອຍສະບັບ, ວາງຄໍາຖະແຫຼງການເຊັ່ນນີ້ຢູ່ດ້ານເທິງ
ຂອງ​ໂຄງ​ການ​ຂອງ​ທ່ານ​:

ໃຊ້ 5.014;

ຄໍາສັ່ງ ການສັບປ່ຽນ
ເຊັ່ນດຽວກັນກັບຄໍາສັ່ງມາດຕະຖານທັງຫມົດ, ສະຫຼັບຕົວອັກສອນດຽວອາດຈະຖືກກຸ່ມກັບ
ຕໍ່ໄປ, ຖ້າມີ.

#!/usr/bin/perl -spi.orig # ຄືກັນກັບ -s -p -i.orig

A "--" ສັນຍານການສິ້ນສຸດຂອງທາງເລືອກແລະປິດການດໍາເນີນການທາງເລືອກເພີ່ມເຕີມ. ການໂຕ້ຖຽງໃດໆ
ຫຼັງຈາກ "--" ຖືກປະຕິບັດເປັນຊື່ໄຟລ໌ແລະການໂຕ້ຖຽງ.

ສະວິດລວມມີ:

-0[ເລກແປດ/ເລກຖານສິບຫົກ]
ລະບຸຕົວແຍກບັນທຶກການປ້ອນຂໍ້ມູນ ($/) ເປັນເລກຖານສິບແປດ ຫຼືເລກຖານສິບຫົກ. ຖ້າ
ບໍ່ມີຕົວເລກ, ຕົວອັກສອນ null ແມ່ນຕົວແຍກ. ປຸ່ມສະວິດອື່ນອາດຈະມາກ່ອນ
ຫຼືປະຕິບັດຕາມຕົວເລກ. ສໍາລັບຕົວຢ່າງ, ຖ້າທ່ານມີສະບັບພາສາ ຊອກຫາ ເຊິ່ງສາມາດພິມໄດ້
ຊື່ໄຟລ໌ຖືກຢຸດໂດຍຕົວອັກສອນ null, ທ່ານສາມາດເວົ້າໄດ້ວ່າ:

ຊອກຫາ. -name '*.orig' -print0 | perl -n0e ຍົກເລີກການເຊື່ອມຕໍ່

ຄ່າພິເສດ 00 ຈະເຮັດໃຫ້ Perl ເລື່ອນໄຟລ໌ໃນຮູບແບບວັກ. ມູນຄ່າໃດໆ
0400 ຫຼືສູງກວ່າຈະເຮັດໃຫ້ Perl ເລື່ອນໄຟລ໌ທັງຫມົດ, ແຕ່ໂດຍສົນທິສັນຍາມູນຄ່າ 0777.
ແມ່ນອັນທີ່ປົກກະຕິແລ້ວໃຊ້ເພື່ອຈຸດປະສົງນີ້.

ນອກນັ້ນທ່ານຍັງສາມາດກໍານົດຕົວອັກສອນຕົວແຍກໂດຍໃຊ້ຫມາຍເລກເລກຖານສິບຫົກ: -0xຮຮ...,
ບ່ອນທີ່ "H" ແມ່ນຕົວເລກເລກຖານສິບຫົກທີ່ຖືກຕ້ອງ. ບໍ່ຄືກັບຮູບແບບແປດ, ອັນນີ້ອາດຈະເປັນ
ໃຊ້ເພື່ອລະບຸຕົວອັກສອນ Unicode, ເຖິງແມ່ນວ່າເກີນ 0xFF. ດັ່ງນັ້ນຖ້າຫາກວ່າທ່ານ ກໍ່ ຕ້ອງການ
ຕົວແຍກບັນທຶກຂອງ 0777, ລະບຸມັນເປັນ -0x1FF. (ນີ້ຫມາຍຄວາມວ່າທ່ານບໍ່ສາມາດໃຊ້
ໄດ້ -x ທາງເລືອກທີ່ມີຊື່ໄດເລກະທໍລີທີ່ປະກອບດ້ວຍຕົວເລກເລກຖານສິບຫົກ, ຫຼືອື່ນໆ Perl
ຈະຄິດວ່າທ່ານໄດ້ລະບຸຕົວເລກ hex ເປັນ -0.)

-a ເປີດໂໝດແຍກອັດຕະໂນມັດເມື່ອໃຊ້ກັບ a -n or -p. ຄໍາສັ່ງການແບ່ງປັນ implicit ກັບ
@F array ແມ່ນເຮັດເປັນສິ່ງທໍາອິດພາຍໃນ implicit ໃນຂະນະທີ່ loop ຜະລິດໂດຍ the -n
or -p.

perl -ane 'ພິມ pop(@F), "\n";'

ເທົ່າກັບ

ໃນຂະນະທີ່ (<>) {
@F = split(' ');
ພິມ pop(@F), "\n";
}

ຕົວຂັ້ນສຳຮອງອາດຈະຖືກລະບຸໂດຍໃຊ້ -F.

-a ກໍານົດ implicitly -n.

-C [ຕົວເລກ/ລາຍຊື່]
ໄດ້ -C ທຸງຄວບຄຸມບາງລັກສະນະ Perl Unicode.

ຮອດປີ 5.8.1, ທ -C ສາມາດຖືກຕິດຕາມດ້ວຍຕົວເລກຫຼືບັນຊີລາຍຊື່ຂອງຕົວອັກສອນທາງເລືອກ.
ຕົວ​ອັກ​ສອນ​, ຄຸນ​ຄ່າ​ຕົວ​ເລກ​ຂອງ​ເຂົາ​ເຈົ້າ​, ແລະ​ຜົນ​ກະ​ທົບ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​; ລາຍຊື່ຕົວອັກສອນແມ່ນ
ເທົ່າກັບການສະຫຼຸບຕົວເລກ.

I 1 STDIN ແມ່ນສົມມຸດວ່າຢູ່ໃນ UTF-8
O 2 STDOUT ຈະຢູ່ໃນ UTF-8
E 4 STDERR ຈະຢູ່ໃນ UTF-8
S 7 I + O + E
i 8 UTF-8 ແມ່ນຊັ້ນ PerlIO ເລີ່ມຕົ້ນສຳລັບກະແສການປ້ອນຂໍ້ມູນ
o 16 UTF-8 ແມ່ນຊັ້ນ PerlIO ເລີ່ມຕົ້ນສຳລັບສະຕຣີມຜົນຜະລິດ
D 24 i + o
A 32 ອົງປະກອບ @ARGV ຄາດວ່າຈະຖືກເຂົ້າລະຫັດສະຕຣິງ
ໃນ UTF-8
L 64 ປົກກະຕິແລ້ວ "IOEioA" ແມ່ນບໍ່ມີເງື່ອນໄຂ, L ເຮັດໃຫ້
ໃຫ້ເຂົາເຈົ້າມີເງື່ອນໄຂຢູ່ໃນຕົວແປສະພາບແວດລ້ອມທ້ອງຖິ່ນ
(LC_ALL, LC_CTYPE, ແລະ LANG, ຕາມລໍາດັບ
ການຫຼຸດລົງກ່ອນຫນ້າ) -- ຖ້າຕົວແປຊີ້ໃຫ້ເຫັນ
UTF-8, ຫຼັງຈາກນັ້ນ "IOEioA" ທີ່ເລືອກແມ່ນມີຜົນ
a 256 ຕັ້ງ ${^UTF8CACHE} ເປັນ -1, ເພື່ອແລ່ນ UTF-8 caching
ລະຫັດໃນໂຫມດດີບັກ.

ຍົກ​ຕົວ​ຢ່າງ, -COE ແລະ ຄ .6 ທັງສອງຈະເປີດໃຊ້ UTF-8-ness ໃນທັງ STDOUT ແລະ STDERR.
ການຊໍ້າຄືນຕົວອັກສອນແມ່ນພຽງແຕ່ຊໍ້າຊ້ອນ, ບໍ່ແມ່ນການສະສົມ ຫຼືການສະຫຼັບ.

ທາງເລືອກ "io" ຫມາຍຄວາມວ່າຫຼັງຈາກນັ້ນໃດໆ ເປີດ() (ຫຼືການດໍາເນີນການ I/O ທີ່ຄ້າຍຄືກັນ) ໃນ
ຂອບເຂດຂອງໄຟລ໌ປະຈຸບັນຈະມີຊັ້ນ ":utf8" PerlIO ນໍາໃຊ້ກັບພວກມັນ, ໃນ
ໃນຄໍາສັບຕ່າງໆອື່ນໆ, UTF-8 ຄາດວ່າຈະມາຈາກການປ້ອນຂໍ້ມູນໃດໆ, ແລະ UTF-8 ແມ່ນຜະລິດໃຫ້ກັບອັນໃດ
ກະແສຜົນຜະລິດ. ນີ້ແມ່ນພຽງແຕ່ຄ່າເລີ່ມຕົ້ນ, ທີ່ມີຊັ້ນຂໍ້ມູນຢ່າງຊັດເຈນ ເປີດ() ແລະມີ
binmode() ຄົນເຮົາສາມາດຈັດການກະແສໄດ້ຕາມປົກກະຕິ.

-C ດ້ວຍຕົວຂອງມັນເອງ (ບໍ່ໄດ້ຕິດຕາມດ້ວຍຕົວເລກຫຼືບັນຊີລາຍຊື່ທາງເລືອກ), ຫຼືສາຍທີ່ຫວ່າງເປົ່າ "" ສໍາລັບ
ຕົວແປສະພາບແວດລ້ອມ "PERL_UNICODE", ມີຜົນກະທົບດຽວກັນກັບ -CSDL. ໃນ​ອື່ນໆ
ຄໍາສັບຕ່າງໆ, ມາດຕະຖານ I/O handles ແລະຊັ້ນ "open()" ເລີ່ມຕົ້ນແມ່ນ UTF-8-fied ແຕ່
ພຽງແຕ່ຖ້າຕົວແປສະພາບແວດລ້ອມທ້ອງຖິ່ນຊີ້ໃຫ້ເຫັນເຖິງທ້ອງຖິ່ນ UTF-8. ພຶດຕິກໍານີ້
ປະຕິບັດຕາມ implicit (ແລະມີບັນຫາ) ພຶດຕິກໍາ UTF-8 ຂອງ Perl 5.8.0. (ເບິ່ງ "UTF-8 no
ຄ່າເລີ່ມຕົ້ນທີ່ຍາວກວ່າພາຍໃຕ້ທ້ອງຖິ່ນ UTF-8" ໃນ perl581delta.)

ທ່ານສາມາດໃຊ້ ຄ .0 (ຫຼື "0" ສໍາລັບ "PERL_UNICODE") ເພື່ອປິດການໃຊ້ງານທັງໝົດຂ້າງເທິງຢ່າງຈະແຈ້ງ
ຄຸນສົມບັດຂອງ Unicode.

ຕົວແປເວດມົນແບບອ່ານຢ່າງດຽວ "${^UNICODE}" ສະທ້ອນຄ່າຕົວເລກນີ້.
ການຕັ້ງຄ່າ. ຕົວແປນີ້ຖືກຕັ້ງໃນລະຫວ່າງການເລີ່ມຕົ້ນ Perl ແລະຕໍ່ມາແມ່ນອ່ານໄດ້ເທົ່ານັ້ນ. ຖ້າ
ທ່ານຕ້ອງການຜົນກະທົບ runtime, ໃຊ້ສາມ arg ເປີດ() (ເບິ່ງ "ເປີດ" ໃນ perlfunc), ສອງ-
arg binmode() (ເບິ່ງ "binmode" ໃນ perlfunc), ແລະ "ເປີດ" pragma (ເບິ່ງເປີດ).

(ໃນ Perls ກ່ອນຫນ້ານີ້ກ່ວາ 5.8.1 the -C switch ແມ່ນສະຫຼັບ Win32 ເທົ່ານັ້ນທີ່ເປີດໃຊ້ງານ
ການນໍາໃຊ້ Unicode-aware "ການໂທລະບົບກ້ວາງ" Win32 APIs. ຄຸນນະສົມບັດນີ້ແມ່ນການປະຕິບັດ
ບໍ່ໄດ້ໃຊ້, ແນວໃດກໍ່ຕາມ, ແລະສະຫຼັບເສັ້ນຄໍາສັ່ງໄດ້ຖືກ "ນໍາມາໃຊ້ໃຫມ່").

ຫມາຍ​ເຫດ​: ນັບຕັ້ງແຕ່ perl 5.10.1, ຖ້າ -C ທາງເລືອກແມ່ນໃຊ້ໃນ "#!" ເສັ້ນ, ມັນຕ້ອງເປັນ
ລະບຸໄວ້ໃນເສັ້ນຄໍາສັ່ງເຊັ່ນດຽວກັນ, ນັບຕັ້ງແຕ່ການຖ່າຍທອດມາດຕະຖານຖືກຕັ້ງໄວ້ແລ້ວ
ໃນຈຸດນີ້ໃນການປະຕິບັດນາຍພາສາ perl. ນອກນັ້ນທ່ານຍັງສາມາດນໍາໃຊ້ binmode()
ເພື່ອກໍານົດການເຂົ້າລະຫັດຂອງ I/O stream.

-c ເຮັດໃຫ້ Perl ກວດສອບ syntax ຂອງໂຄງການແລະຫຼັງຈາກນັ້ນອອກໂດຍບໍ່ມີການປະຕິບັດມັນ.
ຕົວຈິງແລ້ວ, ມັນ ຈະ ປະຕິບັດແລະ "BEGIN", "UNITCHEC", ຫຼື "ກວດເບິ່ງ" ຕັນແລະ "ໃຊ້" ໃດໆ.
ຖະແຫຼງການ: ສິ່ງເຫຼົ່ານີ້ຖືກພິຈາລະນາວ່າເກີດຂຶ້ນຢູ່ນອກການປະຕິບັດໂຄງການຂອງທ່ານ.
ຢ່າງໃດກໍຕາມ, ຕັນ "INIT" ແລະ "END" ຈະຖືກຂ້າມ.

-d
-dt ດໍາເນີນການໂຄງການພາຍໃຕ້ການດີບັກ Perl. ເບິ່ງ perldbug. ຖ້າ t ຖືກກໍານົດ, ມັນ
ຊີ້ໃຫ້ເຫັນເຖິງຕົວດີບັກວ່າກະທູ້ຈະຖືກໃຊ້ໃນລະຫັດທີ່ຖືກດີບັກ.

-d:MOD[=bar,baz]
-dt:MOD[=bar,baz]
ດໍາເນີນການໂຄງການພາຍໃຕ້ການຄວບຄຸມຂອງ debugging, profileing, ຫຼືໂມດູນການຕິດຕາມ
ຕິດຕັ້ງເປັນ "Devel::MOD". ຕົວຢ່າງ: -d:DProf ດໍາເນີນການໂຄງການໂດຍໃຊ້
ໂປຣໄຟລ "Devel::DPF". ເຊັ່ນດຽວກັນກັບ -M ທຸງ, ທາງເລືອກອາດຈະຖືກສົ່ງກັບ
"ພັດທະນາ::MOD" ຊຸດທີ່ເຂົາເຈົ້າຈະໄດ້ຮັບການຕີລາຄາໂດຍ
"ພັດທະນາ::MOD::ນໍາເຂົ້າ" ປົກກະຕິ. ອີກເທື່ອຫນຶ່ງ, ຄື -M, ໃຊ້ --d:-MOD ໂທຫາ
"ພັດທະນາ::MOD:: ບໍ່ນໍາເຂົ້າ" ແທນ​ທີ່​ຈະ​ນໍາ​ເຂົ້າ​. ລາຍຊື່ຕົວເລືອກທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດຕ້ອງ
ປະຕິບັດຕາມ "=" ຕົວອັກສອນ. ຖ້າ t ໄດ້ຖືກລະບຸໄວ້, ມັນຊີ້ໃຫ້ເຫັນເຖິງຕົວດີບັກທີ່ກະທູ້
ຈະຖືກໃຊ້ໃນລະຫັດທີ່ຖືກດີບັກ. ເບິ່ງ perldbug.

-Dຕົວອັກສອນ
-Dຈໍານວນ
ຕັ້ງທຸງດີບັກ. ເພື່ອເບິ່ງວ່າມັນປະຕິບັດໂຄງການຂອງທ່ານແນວໃດ, ໃຫ້ໃຊ້ -Dtls. (ນີ້ເຮັດວຽກ
ພຽງແຕ່ຖ້າຫາກວ່າ debugging ໄດ້ຖືກລວບລວມເຂົ້າໄປໃນ Perl ຂອງທ່ານ.) ມູນຄ່າງາມອີກອັນຫນຶ່ງແມ່ນ -Dx, ທີ່
ລາຍຊື່ຕົ້ນໄມ້ syntax ທີ່ລວບລວມຂອງທ່ານ. ແລະ - ດຣ ສະແດງການລວບລວມການສະແດງອອກປົກກະຕິ; ໄດ້
ຮູບແບບຂອງຜົນຜະລິດໄດ້ຖືກອະທິບາຍໃນ perldebguts.

ເປັນທາງເລືອກ, ໃຫ້ລະບຸຕົວເລກແທນລາຍຊື່ຕົວອັກສອນ (ຕົວຢ່າງ: -14 ກີບ is
ທຽບເທົ່າກັບ -Dtls):

1 p Tokenizing ແລະ parsing (ມີ v, ສະແດງ parse stack)
2s ພາບຖ່າຍຊ້ອນກັນ (ມີ v, ສະແດງທຸກ stacks)
4 l ບໍລິບົດ (loop) stack processing
8 t ການປະຕິບັດການຕິດຕາມ
16 o ວິທີການແລະການແກ້ໄຂ overloading
32 c ການແປງສະຕຣິງ/ຕົວເລກ
64 P Print profileing info, source file input state
128 m ຫນ່ວຍຄວາມຈໍາແລະການຈັດສັນ SV
256 f ການປະມວນຜົນຮູບແບບ
512 r ການແຍກວິເຄາະ ແລະປະຕິບັດການສະແດງອອກແບບປົກກະຕິ
1024 x Syntax tree dump
2048 u ການ​ກວດ​ສອບ​ການ Tainting​
4096 U Unofficial, User hacking (ສະຫງວນໄວ້ເປັນສ່ວນຕົວ,
ການ​ນໍາ​ໃຊ້​ທີ່​ບໍ່​ໄດ້​ປ່ອຍ​ອອກ​ມາ​)
8192 H Hash dump -- ຄ່າ usurps()
16384 X ການຈັດສັນ Scratchpad
32768 D ທໍາຄວາມສະອາດ
65536 S Op ການຈັດສັນ slab
131072 T Tokenizing
262144 R ລວມເອົາການນັບອ້າງອີງຂອງຕົວແປທີ່ຖືກຖິ້ມໄວ້ (ຕົວຢ່າງ: ເມື່ອ
ການ​ນໍາ​ໃຊ້ -Ds​)
524288 J ສະແດງ s,t,P-debug (ຢ່າໂດດຂ້າມ) ໃນ opcodes ພາຍໃນ
ຊຸດ DB
1048576 v Verbose: ໃຊ້ຮ່ວມກັບທຸງອື່ນໆ
2097152 C Copy On Write
4194304 A ຄວາມສອດຄ່ອງກວດສອບໂຄງສ້າງພາຍໃນ
8388608 q ງຽບ - ປະຈຸບັນພຽງແຕ່ສະກັດກັ້ນ "EXECUTING" ເທົ່ານັ້ນ
ຂໍ້ຄວາມ
16777216 M trace smart match ຄວາມລະອຽດ
33554432 B dump suBroutine ຄໍານິຍາມ, ລວມທັງ Blocks ພິເສດ
ຄື BEGIN
67108864 L ຕິດຕາມຂໍ້ມູນທີ່ກ່ຽວຂ້ອງກັບທ້ອງຖິ່ນ; ສິ່ງທີ່ໄດ້ຮັບຜົນຜະລິດແມ່ນຫຼາຍ
ອາດມີການປ່ຽນແປງ

ທຸງທັງຫມົດເຫຼົ່ານີ້ຕ້ອງການ - ດີບັກ ໃນເວລາທີ່ທ່ານລວບລວມ Perl ປະຕິບັດໄດ້ (ແຕ່ເບິ່ງ
":opd" ໃນ Devel::Peek ຫຼື "'debug' mode" ໃນ re ທີ່ອາດຈະມີການປ່ຽນແປງນີ້). ເບິ່ງ
ການຕິດຕັ້ງ ໄຟລ໌ໃນການແຈກຢາຍແຫຼ່ງ Perl ສໍາລັບວິທີການເຮັດສິ່ງນີ້. ທຸງນີ້ແມ່ນ
ຕັ້ງອັດຕະໂນມັດຖ້າທ່ານລວມ -g ທາງເລືອກໃນເວລາທີ່ "Configure" ຖາມທ່ານກ່ຽວກັບ
ທຸງ optimizer/debugger.

ຖ້າທ່ານພຽງແຕ່ພະຍາຍາມເອົາການພິມອອກຈາກແຕ່ລະແຖວຂອງລະຫັດ Perl ຍ້ອນວ່າມັນດໍາເນີນການ,
ວິທີທີ່ "sh -x" ສະຫນອງສໍາລັບ shell script, ທ່ານບໍ່ສາມາດໃຊ້ Perl's -D ສະຫຼັບ.
ແທນທີ່ຈະເຮັດແນວນີ້

# ຖ້າທ່ານມີ "env" ຜົນປະໂຫຍດ
env PERLDB_OPTS="NonStop=1 AutoTrace=1 frame=2" ໂປຣແກຣມ perl -dS

# Bourne shell syntax
$ PERLDB_OPTS="NonStop=1 AutoTrace=1 frame=2" ໂປຣແກຣມ perl -dS

# csh syntax
% (setenv PERLDB_OPTS "NonStop=1 AutoTrace=1 frame=2"; ໂປຣແກຣມ perl -dS)

ເບິ່ງ perldebug ສໍາລັບລາຍລະອຽດ ແລະການປ່ຽນແປງ.

-e ເສັ້ນຄໍາສັ່ງ
ອາດຈະຖືກນໍາໃຊ້ເພື່ອເຂົ້າໄປໃນຫນຶ່ງແຖວຂອງໂຄງການ. ຖ້າ -e ແມ່ນໃຫ້, Perl ຈະບໍ່ຊອກຫາ
ຊື່ໄຟລ໌ໃນລາຍການໂຕ້ແຍ້ງ. ຫຼາຍ -e ຄໍາສັ່ງອາດຈະໄດ້ຮັບເພື່ອສ້າງເປັນ
script ຫຼາຍແຖວ. ໃຫ້ແນ່ໃຈວ່າໃຊ້ semicolons ບ່ອນທີ່ທ່ານຈະຢູ່ໃນໂຄງການປົກກະຕິ.

-E ເສັ້ນຄໍາສັ່ງ
ປະຕິບັດຕົວຄືກັນກັບ -e, ຍົກ​ເວັ້ນ​ແຕ່​ວ່າ​ມັນ implicitly ເຮັດ​ໃຫ້​ຄຸນ​ນະ​ສົມ​ບັດ​ທາງ​ເລືອກ​ທັງ​ຫມົດ (ໃນ
ໜ່ວຍ​ງານ​ສັງ​ລວມ​ຫຼັກ). ເບິ່ງຄຸນສົມບັດ.

-f ປິດການໃຊ້ງານ $Config{sitelib}/sitecustomize.pl ໃນຕອນເລີ່ມຕົ້ນ.

Perl ສາມາດຖືກສ້າງຂຶ້ນເພື່ອໃຫ້ມັນໂດຍຄ່າເລີ່ມຕົ້ນຈະພະຍາຍາມປະຕິບັດ
$Config{sitelib}/sitecustomize.pl ໃນຕອນເລີ່ມຕົ້ນ (ຢູ່ໃນບລັອກ BEGIN). ນີ້ແມ່ນ hook ວ່າ
ອະນຸຍາດໃຫ້ sysadmin ປັບແຕ່ງວິທີການປະພຶດຂອງ Perl. ສໍາລັບຕົວຢ່າງ, ມັນສາມາດຖືກນໍາໃຊ້ເພື່ອ
ເພີ່ມລາຍການໃສ່ @INC array ເພື່ອເຮັດໃຫ້ Perl ຊອກຫາໂມດູນໃນສະຖານທີ່ທີ່ບໍ່ແມ່ນມາດຕະຖານ.

Perl ຈິງໃສ່ລະຫັດຕໍ່ໄປນີ້:

{
ເຮັດ {ທ້ອງຖິ່ນ $!; -f "$Config{sitelib}/sitecustomize.pl"; }
&& ເຮັດ "$Config{sitelib}/sitecustomize.pl";
}

ເນື່ອງຈາກວ່າມັນເປັນ "ເຮັດ" ຕົວຈິງ (ບໍ່ແມ່ນ "ຕ້ອງການ"), sitecustomize.pl ບໍ່ຈໍາເປັນຕ້ອງກັບຄືນມາ
ມູນຄ່າທີ່ແທ້ຈິງ. ລະຫັດແມ່ນດໍາເນີນການຢູ່ໃນຊຸດ "ຕົ້ນຕໍ", ໃນຂອບເຂດຂອງ lexical ຂອງຕົນເອງ. ແນວໃດກໍ່ຕາມ,
ຖ້າສະຄຣິບຕາຍ, $@ ຈະບໍ່ຖືກຕັ້ງ.

ຄ່າຂອງ $Config{sitelib} ຍັງຖືກກໍານົດຢູ່ໃນລະຫັດ C ແລະບໍ່ໄດ້ອ່ານຈາກ
"Config.pm", ເຊິ່ງບໍ່ໄດ້ໂຫລດ.

ລະຫັດຖືກປະຕິບັດ ຫຼາຍ ຕົ້ນ. ຕົວຢ່າງ, ການປ່ຽນແປງໃດໆຕໍ່ @INC ຈະປາກົດຂຶ້ນ
ໃນຜົນຜະລິດຂອງ 'perl -V'. ແນ່ນອນ, ຕັນ "END" ຈະຖືກປະຕິບັດເຊັ່ນດຽວກັນ
ເດິກ

ເພື່ອກໍານົດໃນເວລາແລ່ນຖ້າຄວາມສາມາດນີ້ໄດ້ຖືກລວບລວມຢູ່ໃນ perl ຂອງທ່ານ, ທ່ານສາມາດເຮັດໄດ້
ກວດເບິ່ງມູນຄ່າຂອງ $Config{usesitecustomize}.

-Fຮູບແບບ
ກໍານົດຮູບແບບທີ່ຈະແບ່ງປັນສໍາລັບ -a. ຮູບແບບອາດຈະຖືກອ້ອມຮອບດ້ວຍ "//", "",
ຫຼື '', ຖ້າບໍ່ດັ່ງນັ້ນມັນຈະໃສ່ໃນວົງຢືມດຽວ. ທ່ານບໍ່ສາມາດໃຊ້ຊ່ອງຫວ່າງຕົວໜັງສືໃນ
ຮູບແບບ.

-F implicitly ກໍານົດທັງສອງ -a ແລະ -n.

-h ພິມບົດສະຫຼຸບຂອງທາງເລືອກ.

-i[ການຂະຫຍາຍ]
ລະບຸວ່າໄຟລ໌ທີ່ປະມວນຜົນໂດຍໂຄງສ້າງ "<>" ຈະຖືກແກ້ໄຂໃນສະຖານທີ່. ມັນ
ເຮັດສິ່ງນີ້ໂດຍການປ່ຽນຊື່ໄຟລ໌ປ້ອນຂໍ້ມູນ, ເປີດໄຟລ໌ຜົນຜະລິດໂດຍຊື່ຕົ້ນສະບັບ,
ແລະເລືອກໄຟລ໌ຜົນຜະລິດທີ່ເປັນຄ່າເລີ່ມຕົ້ນ ພິມ () ຖະແຫຼງການ. ການ​ຂະ​ຫຍາຍ​ຕົວ​,
ຖ້າ​ຫາກ​ວ່າ​ສະ​ຫນອງ​ໃຫ້​, ຖືກ​ນໍາ​ໃຊ້​ເພື່ອ​ປັບ​ປຸງ​ແກ້​ໄຂ​ຊື່​ຂອງ​ໄຟລ​໌​ເກົ່າ​ເພື່ອ​ເຮັດ​ສໍາ​ເນົາ​ສໍາ​ຮອງ​ຂໍ້​ມູນ​,
ປະຕິບັດຕາມກົດລະບຽບເຫຼົ່ານີ້:

ຖ້າບໍ່ມີການສະຫນອງການຂະຫຍາຍ, ແລະລະບົບຂອງທ່ານສະຫນັບສະຫນູນມັນ, ຕົ້ນສະບັບ ເອກະສານ ຖືກເກັບຮັກສາໄວ້
ເປີດໂດຍບໍ່ມີຊື່ໃນຂະນະທີ່ຜົນຜະລິດຖືກໂອນໄປຫາໄຟລ໌ໃຫມ່ທີ່ມີຕົ້ນສະບັບ
ຊື່​ເອ​ກະ​ສານ. ໃນເວລາທີ່ perl ອອກຈາກ, ສະອາດຫຼືບໍ່, ຕົ້ນສະບັບ ເອກະສານ ຖືກຍົກເລີກການເຊື່ອມຕໍ່.

ຖ້າສ່ວນຂະຫຍາຍບໍ່ມີ "*", ມັນຈະຖືກຕໍ່ທ້າຍຂອງປັດຈຸບັນ
ຊື່ໄຟລ໌ເປັນຄຳຕໍ່ທ້າຍ. ຖ້າສ່ວນຂະຫຍາຍມີຫນຶ່ງຫຼືຫຼາຍກວ່າ "*" ຕົວອັກສອນ, ຫຼັງຈາກນັ້ນ
ແຕ່ລະ "*" ຖືກແທນທີ່ດ້ວຍຊື່ໄຟລ໌ປະຈຸບັນ. ໃນເງື່ອນໄຂ Perl, ທ່ານສາມາດຄິດເຖິງ
ນີ້ຄື:

($backup = $extension) =~ s/\*/$file_name/g;

ນີ້ອະນຸຍາດໃຫ້ທ່ານສາມາດເພີ່ມຄໍານໍາຫນ້າກັບໄຟລ໌ສໍາຮອງຂໍ້ມູນ, ແທນທີ່ຈະ (ຫຼືນອກຈາກນັ້ນ) a
ຄຳຕໍ່ທ້າຍ:

$ perl -pi'orig_*' -e 's/bar/baz/' fileA # ສຳຮອງໄປ
# 'orig_fileA'

ຫຼືແມ້ກະທັ້ງການຈັດວາງສໍາເນົາສໍາຮອງຂອງໄຟລ໌ຕົ້ນສະບັບເຂົ້າໄປໃນໄດເລກະທໍລີອື່ນ (ສະຫນອງໃຫ້
ໄດເລກະທໍລີມີຢູ່ແລ້ວ):

$ perl -pi'old/*.orig' -e 's/bar/baz/' fileA # ສໍາຮອງຂໍ້ມູນກັບ
# 'old/fileA.orig'

ຊຸດເຫຼົ່ານີ້ຂອງ one-liner ແມ່ນທຽບເທົ່າ:

$ perl -pi -e 's/bar/baz/' fileA # ຂຽນທັບໄຟລ໌ປະຈຸບັນ
$ perl -pi'*' -e 's/bar/baz/' fileA # ຂຽນທັບໄຟລ໌ປັດຈຸບັນ

$ perl -pi'.orig' -e 's/bar/baz/' fileA # ສໍາຮອງຂໍ້ມູນ 'fileA.orig'
$ perl -pi'*.orig' -e 's/bar/baz/' fileA # ສໍາຮອງຂໍ້ມູນ 'fileA.orig'

ຈາກແກະ, ເວົ້າວ່າ

$ perl -p -i.orig -e "s/foo/bar/; ... "

ຄື​ກັນ​ກັບ​ການ​ນໍາ​ໃຊ້​ໂຄງ​ການ​:

#!/usr/bin/perl -pi.orig
s/foo/bar/;

ເຊິ່ງທຽບເທົ່າກັບ

#!/usr/bin/perl
$extension = '.orig';
LINE: ໃນຂະນະທີ່ (<>) {
ຖ້າ ($ARGV ne $oldargv) {
ຖ້າ ($extension !~ /\*/) {
$backup = $ARGV . $extension;
}
ອື່ນ {
($backup = $extension) =~ s/\*/$ARGV/g;
}
ປ່ຽນຊື່($ARGV, $backup);
ເປີດ(ARGVOUT, ">$ARGV");
ເລືອກ(ARGVOUT);
$oldargv = $ARGV;
}
s/foo/bar/;
}
ສືບຕໍ່ {
ພິມ; # ອັນນີ້ພິມເປັນຊື່ໄຟລ໌ຕົ້ນສະບັບ
}
ເລືອກ(STDOUT);

ຍົກເວັ້ນວ່າ -i ແບບຟອມບໍ່ຈໍາເປັນຕ້ອງປຽບທຽບ $ARGV ກັບ $oldargv ເພື່ອຮູ້ວ່າເວລາໃດ
ຊື່ໄຟລ໌ມີການປ່ຽນແປງ. ຢ່າງໃດກໍຕາມ, ມັນໃຊ້ ARGVOUT ສໍາລັບຕົວຈັບໄຟລ໌ທີ່ເລືອກ.
ຈື່ໄວ້ວ່າ STDOUT ຖືກຟື້ນຟູເປັນຕົວຈັບໄຟລ໌ອອກໃນຕອນຕົ້ນຫຼັງຈາກ loop.

ດັ່ງທີ່ສະແດງຢູ່ຂ້າງເທິງ, Perl ສ້າງໄຟລ໌ສໍາຮອງຂໍ້ມູນບໍ່ວ່າຈະເປັນຜົນຜະລິດໃດໆ
ປ່ຽນແປງ. ດັ່ງນັ້ນ, ນີ້ແມ່ນພຽງແຕ່ວິທີ fancy ເພື່ອຄັດລອກໄຟລ໌:

$ perl -p -i'/some/file/path/*' -e 1 file1 file2 file3...
or
$ perl -p -i'.orig' -e 1 file1 file2 file3...

ທ່ານສາມາດນໍາໃຊ້ "eof" ໂດຍບໍ່ມີວົງເລັບເພື່ອຊອກຫາຈຸດສິ້ນສຸດຂອງແຕ່ລະໄຟລ໌ປ້ອນຂໍ້ມູນ, ໃນກໍລະນີ
ທ່ານ​ຕ້ອງ​ການ​ທີ່​ຈະ​ຕໍ່​ທ້າຍ​ກັບ​ແຕ່​ລະ​ໄຟລ​໌​, ຫຼື​ປັບ​ຕົວ​ເລກ​ແຖວ (ເບິ່ງ​ຕົວ​ຢ່າງ​ໃນ "eof​" ໃນ​
perlfunc).

ຖ້າ​ຫາກ​ວ່າ​, ສໍາ​ລັບ​ໄຟລ​໌​ທີ່​ໄດ້​ຮັບ​, Perl ບໍ່​ສາ​ມາດ​ສ້າງ​ໄຟລ​໌​ສໍາ​ຮອງ​ຂໍ້​ມູນ​ທີ່​ລະ​ບຸ​ໄວ້​ໃນ​
ສ່ວນຂະຫຍາຍຫຼັງຈາກນັ້ນມັນຈະຂ້າມໄຟລ໌ນັ້ນແລະສືບຕໍ່ກັບອັນຕໍ່ໄປ (ຖ້າມັນ
ມີ).

ສໍາລັບການສົນທະນາກ່ຽວກັບບັນຫາອ້ອມຂ້າງການອະນຸຍາດໄຟລ໌ແລະ -i, ເບິ່ງ "ເປັນຫຍັງ Perl
ໃຫ້ຂ້ອຍລຶບໄຟລ໌ອ່ານເທົ່ານັ້ນບໍ? ເປັນຫຍັງ -i clobber ປ້ອງກັນໄຟລ໌? ນີ້​ບໍ່​ແມ່ນ
ບັກໃນ Perl?” ໃນ perlfaq5.

ທ່ານບໍ່ສາມາດໃຊ້ -i ເພື່ອສ້າງໄດເລກະທໍລີ ຫຼືລຶບສ່ວນຂະຫຍາຍອອກຈາກໄຟລ໌.

Perl ບໍ່ໄດ້ຂະຫຍາຍ "~" ໃນຊື່ໄຟລ໌, ເຊິ່ງເປັນສິ່ງທີ່ດີ, ເພາະວ່າບາງຄົນໃຊ້ມັນສໍາລັບ
ໄຟລ​໌​າ​ຮອງ​ຂອງ​ເຂົາ​ເຈົ້າ​:

$ perl -pi~ -e 's/foo/bar/' file1 file2 file3...

ໃຫ້ສັງເກດວ່າເພາະວ່າ -i ປ່ຽນຊື່ ຫຼືລຶບໄຟລ໌ຕົ້ນສະບັບອອກກ່ອນທີ່ຈະສ້າງໄຟລ໌ໃໝ່
ໃນຊື່ດຽວກັນ, ການເຊື່ອມຕໍ່ອ່ອນແລະແຂງແບບ Unix ຈະບໍ່ຖືກຮັກສາໄວ້.

ສຸດທ້າຍ, ໄດ້ -i switch ບໍ່ຂັດຂວາງການປະຕິບັດໃນເວລາທີ່ບໍ່ມີໄຟລ໌ຖືກມອບຢູ່ໃນ
ເສັ້ນຄໍາສັ່ງ. ໃນກໍລະນີນີ້, ບໍ່ມີການສໍາຮອງໃດໆ (ໄຟລ໌ຕົ້ນສະບັບບໍ່ສາມາດ, ແນ່ນອນ,
ຖືກກໍານົດ) ແລະການປະມວນຜົນຈາກ STDIN ຫາ STDOUT ຕາມທີ່ຄາດໄວ້.

-Iລະບົບ
ໄດເລກະທໍລີທີ່ລະບຸໂດຍ -I ແມ່ນ prepended ກັບເສັ້ນທາງຄົ້ນຫາສໍາລັບໂມດູນ (@INC).

-l[octnum]
ເປີດໃຊ້ການປະມວນຜົນເສັ້ນອັດຕະໂນມັດ. ມັນມີສອງຜົນກະທົບແຍກຕ່າງຫາກ. ຫນ້າທໍາອິດ, ມັນ
ອັດຕະໂນມັດ chomps $/ (ຕົວແຍກບັນທຶກການປ້ອນຂໍ້ມູນ) ເມື່ອໃຊ້ກັບ -n or -p.
ອັນທີສອງ, ມັນກໍານົດ "$\" (ຕົວແຍກບັນທຶກຜົນຜະລິດ) ໃຫ້ມີມູນຄ່າຂອງ octnum so
ວ່າຄໍາຖະແຫຼງການພິມໃດໆຈະມີຕົວແຍກນັ້ນຕື່ມໃສ່ຄືນ. ຖ້າ octnum is
ຍົກເລີກ, ຕັ້ງ "$\" ເປັນມູນຄ່າປັດຈຸບັນຂອງ $/. ຕົວຢ່າງ, ຕັດເສັ້ນເປັນ 80
ຖັນ:

perl -lpe 'substr($_, 80) = ""'

ໃຫ້ສັງເກດວ່າການມອບຫມາຍ "$\ = $/" ແມ່ນເຮັດເມື່ອສະຫຼັບຖືກປຸງແຕ່ງ, ດັ່ງນັ້ນການປ້ອນຂໍ້ມູນ
ຕົວແຍກບັນທຶກສາມາດແຕກຕ່າງກັນຫຼາຍກ່ວາຕົວແຍກບັນທຶກຜົນຜະລິດຖ້າຫາກວ່າ -l ສະຫຼັບ
ຕິດຕາມດ້ວຍ a -0 ປ່ຽນ:

gnufind / -print0 | perl -ln0e 'ພິມ "ພົບ $_" ຖ້າ -p'

ອັນນີ້ກຳນົດ "$\" ເປັນແຖວໃໝ່ ແລະ ຈາກນັ້ນກຳນົດ $/ ເປັນຕົວອັກສອນ null.

-m[-]ໂມດູນ
-M[-]ໂມດູນ
-M[-]'ໂມດູນ ... '
-[ມມ][-]module=arg[,arg]...
-mໂມດູນ ປະຕິບັດ "ໃຊ້" ໂມດູນ "();" ກ່ອນ​ທີ່​ຈະ​ປະ​ຕິ​ບັດ​ໂຄງ​ການ​ຂອງ​ທ່ານ​.

-Mໂມດູນ ປະຕິບັດ "ໃຊ້" ໂມດູນ ";" ກ່ອນ​ທີ່​ຈະ​ປະ​ຕິ​ບັດ​ໂຄງ​ການ​ຂອງ​ທ່ານ​. ທ່ານສາມາດນໍາໃຊ້ຄໍາເວົ້າ
ເພື່ອເພີ່ມລະຫັດເພີ່ມເຕີມຫຼັງຈາກຊື່ໂມດູນ, ຕົວຢ່າງ, '-Mແບບ ຈຳ ລອງ qw(foo ບາ)'.

ຖ້າລັກສະນະທໍາອິດຫຼັງຈາກ -M or -m ເປັນ dash (-) ຫຼັງຈາກນັ້ນ, 'ການນໍາໃຊ້' ໄດ້ຖືກທົດແທນ
ກັບ 'ບໍ່'.

້ໍາຕານ syntactic ເລັກນ້ອຍຫມາຍຄວາມວ່າເຈົ້າຍັງສາມາດເວົ້າໄດ້ -mແບບ ຈຳ ລອງ=foo,ແຖບ or
-Mແບບ ຈຳ ລອງ=foo,ແຖບ ເປັນທາງລັດສໍາລັບ '-ມແບບ ຈຳ ລອງ qw(foo ບາ)'. ນີ້ຫຼີກເວັ້ນຄວາມຕ້ອງການທີ່ຈະ
ໃຊ້ວົງຢືມໃນເວລາທີ່ນໍາເຂົ້າສັນຍາລັກ. ລະຫັດຕົວຈິງທີ່ສ້າງຂຶ້ນໂດຍ -Mແບບ ຈຳ ລອງ=foo,ແຖບ is
"ໃຊ້ໂມດູນການແບ່ງປັນ(/,/,q{foo,bar})". ໃຫ້ສັງເກດວ່າ "=" ແບບຟອມລົບຄວາມແຕກຕ່າງ
ລະຫວ່າງ -m ແລະ -M1 ນັ້ນ​ແມ່ນ, -mແບບ ຈຳ ລອງ=foo,ແຖບ ແມ່ນຄືກັນກັບ -Mແບບ ຈຳ ລອງ=foo,ແຖບ.

ຜົນສະທ້ອນຂອງການນີ້ແມ່ນວ່າ -Mແບບ ຈຳ ລອງ=ຕົວເລກ ບໍ່ເຄີຍກວດສອບເວີຊັນ, ເວັ້ນເສຍແຕ່
"ໂມດູນ::ນໍາເຂົ້າ()" ຕົວຂອງມັນເອງໄດ້ຖືກສ້າງຕັ້ງຂຶ້ນເພື່ອເຮັດການກວດສອບສະບັບ, ເຊິ່ງອາດຈະເກີດຂຶ້ນສໍາລັບ
ຕົວຢ່າງຖ້າ ແບບ ຈຳ ລອງ ສືບທອດມາຈາກຜູ້ສົ່ງອອກ.

-n ເຮັດໃຫ້ Perl ສົມມຸດວ່າ loop ດັ່ງຕໍ່ໄປນີ້ປະມານໂຄງການຂອງທ່ານ, ເຊິ່ງເຮັດໃຫ້ມັນ iterate
ຫຼາຍກວ່າການໂຕ້ຖຽງຊື່ໄຟລ໌ທີ່ຄ້າຍຄື sed -n or ງຸ່ມ:

ເສັ້ນ:
ໃນຂະນະທີ່ (<>) {
... #ໂປຣແກມຂອງເຈົ້າໄປທີ່ນີ້
}

ໃຫ້ສັງເກດວ່າເສັ້ນບໍ່ໄດ້ຖືກພິມໂດຍຄ່າເລີ່ມຕົ້ນ. ເບິ່ງ "-p" ເພື່ອໃຫ້ມີເສັ້ນພິມ. ຖ້າ
ໄຟລ໌ທີ່ມີຊື່ໂດຍການໂຕ້ຖຽງບໍ່ສາມາດເປີດໄດ້ດ້ວຍເຫດຜົນບາງຢ່າງ, Perl ເຕືອນທ່ານກ່ຽວກັບມັນ
ແລະຍ້າຍໄປໄຟລ໌ຕໍ່ໄປ.

ຍັງສັງເກດວ່າ "<>" ຜ່ານການໂຕ້ຖຽງເສັ້ນຄໍາສັ່ງເພື່ອ "ເປີດ" ໃນ perlfunc, ເຊິ່ງ
ບໍ່ຈໍາເປັນຕ້ອງຕີຄວາມຫມາຍພວກມັນເປັນຊື່ໄຟລ໌. ເບິ່ງ perlop ສໍາລັບຄວາມປອດໄພທີ່ເປັນໄປໄດ້
ຜົນສະທ້ອນ.

ນີ້ແມ່ນວິທີທີ່ມີປະສິດທິພາບໃນການລຶບໄຟລ໌ທັງໝົດທີ່ຍັງບໍ່ໄດ້ແກ້ໄຂເທື່ອ
ອາ​ທິດ​ຫນື່ງ:

ຊອກຫາ. -mtime +7 -ພິມ | perl -nle ຍົກເລີກການເຊື່ອມຕໍ່

ນີ້ແມ່ນໄວກ່ວາການນໍາໃຊ້ -ປະຕິບັດ ຫຼັບຂອງ ຊອກຫາ ເພາະວ່າທ່ານບໍ່ຈໍາເປັນຕ້ອງເລີ່ມຕົ້ນ a
ຂະບວນການໃນທຸກໆຊື່ໄຟລ໌ທີ່ພົບເຫັນ. ມັນທົນທຸກຈາກຄວາມຜິດພາດຂອງການຈັດການສາຍໃຫມ່ທີ່ບໍ່ຖືກຕ້ອງ
ໃນ pathnames, ທີ່ທ່ານສາມາດແກ້ໄຂໄດ້ຖ້າຫາກວ່າທ່ານປະຕິບັດຕາມຕົວຢ່າງພາຍໃຕ້ -0.

ບລັອກ "BEGIN" ແລະ "END" ອາດຈະຖືກນໍາໃຊ້ເພື່ອເກັບກໍາການຄວບຄຸມກ່ອນຫຼືຫຼັງຈາກ implicit
loop ໂຄງການ, ຄືກັນກັບໃນ ງຸ່ມ.

-p ເຮັດໃຫ້ Perl ສົມມຸດວ່າ loop ດັ່ງຕໍ່ໄປນີ້ປະມານໂຄງການຂອງທ່ານ, ເຊິ່ງເຮັດໃຫ້ມັນ iterate
ຫຼາຍກວ່າການໂຕ້ຖຽງຊື່ໄຟລ໌ທີ່ຄ້າຍຄື sed:

ເສັ້ນ:
ໃນຂະນະທີ່ (<>) {
... #ໂປຣແກມຂອງເຈົ້າໄປທີ່ນີ້
} ສືບຕໍ່ {
ພິມຫຼືຕາຍ "-p ຈຸດຫມາຍປາຍທາງ: $!\n";
}

ຖ້າໄຟລ໌ທີ່ມີຊື່ໂດຍການໂຕ້ຖຽງບໍ່ສາມາດເປີດໄດ້ດ້ວຍເຫດຜົນບາງຢ່າງ, Perl ເຕືອນທ່ານກ່ຽວກັບ
ມັນ, ແລະຍ້າຍໄປໄຟລ໌ຕໍ່ໄປ. ໃຫ້ສັງເກດວ່າເສັ້ນຖືກພິມໂດຍອັດຕະໂນມັດ.
ຄວາມຜິດພາດທີ່ເກີດຂຶ້ນໃນລະຫວ່າງການພິມແມ່ນຖືວ່າເປັນອັນຕະລາຍເຖິງຕາຍ. ເພື່ອສະກັດກັ້ນການພິມ, ໃຊ້
-n ປ່ຽນ. ກ -p overrides a -n ສະຫຼັບ.

ບລັອກ "BEGIN" ແລະ "END" ອາດຈະຖືກນໍາໃຊ້ເພື່ອເກັບກໍາການຄວບຄຸມກ່ອນຫຼືຫຼັງຈາກ implicit
loop, ຄືກັນກັບໃນ ງຸ່ມ.

-s ເປີດໃຊ້ການແຍກວິເຄາະສະວິດຂັ້ນພື້ນຖານສຳລັບສະວິດໃນແຖວຄຳສັ່ງຫຼັງຈາກໂປຣແກຣມ
ຊື່ແຕ່ກ່ອນ arguments ຊື່ໄຟລ໌ໃດ (ຫຼືກ່ອນການໂຕ້ຖຽງຂອງ --). ສະຫຼັບໃດໆ
ພົບວ່າມີການໂຍກຍ້າຍອອກຈາກ @ARGV ແລະກໍານົດຕົວແປທີ່ສອດຄ້ອງກັນໃນ Perl
ໂຄງການ. ໂປຣແກຣມຕໍ່ໄປນີ້ພິມ "1" ຖ້າໂປຣແກຣມຖືກເອີ້ນດ້ວຍ a -xyz
ສະຫຼັບ, ແລະ "abc" ຖ້າມັນຖືກເອີ້ນດ້ວຍ -xyz=abc.

#!/usr/bin/perl -s
ຖ້າ ($xyz) { ພິມ "$xyz\n" }

ສັງເກດວ່າສະຫຼັບເຊັ່ນ - ຊ່ວຍ ສ້າງຕົວແປ "${-help}", ເຊິ່ງບໍ່ແມ່ນ
ສອດຄ່ອງກັບ "ໃຊ້ "refs" ທີ່ເຄັ່ງຄັດ. ນອກຈາກນີ້, ໃນເວລາທີ່ການນໍາໃຊ້ທາງເລືອກນີ້ໃນ script ກັບ
ການເຕືອນໄພເປີດໃຊ້ງານທ່ານອາດຈະໄດ້ຮັບຄໍາເຕືອນຫຼາຍ "ໃຊ້ພຽງແຕ່ຄັ້ງດຽວ" spurious.

-S ເຮັດໃຫ້ Perl ໃຊ້ຕົວແປສະພາບແວດລ້ອມ PATH ເພື່ອຊອກຫາໂຄງການເວັ້ນເສຍແຕ່ວ່າ
ຊື່ຂອງໂຄງການມີຕົວແຍກເສັ້ນທາງ.

ໃນບາງເວທີ, ນີ້ຍັງເຮັດໃຫ້ Perl ເພີ່ມເຕີມຕໍ່ກັບຊື່ໄຟລ໌ໃນຂະນະທີ່
ຊອກຫາມັນ. ຕົວຢ່າງ, ໃນເວທີ Win32, ".bat" ແລະ ".cmd" ຕໍ່ທ້າຍ
ຈະຖືກຕໍ່ທ້າຍຖ້າການຊອກຫາຊື່ຕົ້ນສະບັບລົ້ມເຫລວ, ແລະຖ້າຊື່ນັ້ນບໍ່ໄດ້
ແລ້ວສິ້ນສຸດໃນຫນຶ່ງຂອງ suffixes ເຫຼົ່ານັ້ນ. ຖ້າ Perl ຂອງທ່ານຖືກລວບລວມດ້ວຍ "DEBUGGING"
ເປີດ, ໃຊ້ - ປ ປ່ຽນເປັນ Perl ສະແດງໃຫ້ເຫັນວິທີການຄົ້ນຫາກ້າວຫນ້າ.

ໂດຍປົກກະຕິແລ້ວ ອັນນີ້ໃຊ້ເພື່ອເຮັດຕາມແບບ "#!" ການເລີ່ມຕົ້ນໃນເວທີທີ່ບໍ່ຮອງຮັບ "#!".
ມັນຍັງສະດວກໃນເວລາທີ່ debugging script ທີ່ໃຊ້ "#!", ແລະດັ່ງນັ້ນຈຶ່ງເປັນປົກກະຕິ
ພົບເຫັນໂດຍກົນໄກຄົ້ນຫາ $PATH ຂອງແກະ.

ຕົວຢ່າງນີ້ເຮັດວຽກຢູ່ໃນຫຼາຍເວທີທີ່ມີ shell ທີ່ເຫມາະສົມກັບ Bourne shell:

#!/usr/bin/perl
eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
ຖ້າ $running_under_some_shell;

ລະບົບບໍ່ສົນໃຈແຖວທໍາອິດແລະໃຫ້ໂຄງການ / ຖັງ / sh, ເຊິ່ງດໍາເນີນການກັບ
ພະຍາຍາມປະຕິບັດໂຄງການ Perl ເປັນ Shell script. ແກະປະຕິບັດການທີສອງ
ເສັ້ນເປັນຄໍາສັ່ງ shell ປົກກະຕິ, ແລະດັ່ງນັ້ນຈຶ່ງເລີ່ມຕົ້ນການແປພາສາ Perl. ໃນບາງ
ລະບົບ $0 ບໍ່ມີຊື່ເສັ້ນທາງເຕັມສະເໝີ, ດັ່ງນັ້ນ -S ບອກ Perl ໃຫ້ຄົ້ນຫາ
ສໍາລັບໂຄງການຖ້າຫາກວ່າມີຄວາມຈໍາເປັນ. ຫຼັງຈາກ Perl ຄົ້ນຫາໂຄງການ, ມັນແຍກສາຍ
ແລະບໍ່ສົນໃຈພວກມັນເພາະວ່າຕົວແປ $running_under_some_shell ບໍ່ເຄີຍເປັນຄວາມຈິງ. ຖ້າ
ໂປຣແກຣມຈະຖືກຕີຄວາມໝາຍໂດຍ csh, ທ່ານຈະຕ້ອງປ່ຽນ "${1+"$@"}" ດ້ວຍ $*,
ເຖິງແມ່ນວ່າມັນບໍ່ເຂົ້າໃຈບ່ອນຝັງຕົວ (ແລະສິ່ງດັ່ງກ່າວ) ໃນບັນຊີລາຍຊື່ການໂຕ້ຖຽງ.
ເພື່ອເລີ່ມຕົ້ນ sh ແທນ​ທີ່​ຈະ csh, ບາງລະບົບອາດຈະຕ້ອງປ່ຽນແທນ "#!" ເສັ້ນກັບ a
ເສັ້ນທີ່ປະກອບມີພຽງແຕ່ຈໍ້າສອງເມັດ, ເຊິ່ງ Perl ຈະຖືກລະເລີຍຢ່າງສຸພາບ. ລະບົບອື່ນໆ
ບໍ່ສາມາດຄວບຄຸມໄດ້, ແລະຕ້ອງການການກໍ່ສ້າງ devious ທັງຫມົດທີ່ຈະເຮັດວຽກພາຍໃຕ້ການໃດໆ
csh, sh, ຫຼື Perl, ເຊັ່ນວ່າ:

eval '(ອອກ $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
& eval 'exec /usr/bin/perl -wS $0 $argv:q'
ຖ້າ $running_under_some_shell;

ຖ້າຊື່ໄຟລ໌ທີ່ໃຫ້ມາປະກອບດ້ວຍຕົວແຍກໄດເລກະທໍລີ (ແລະດັ່ງນັ້ນແມ່ນຢ່າງແທ້ຈິງຫຼື
ຊື່ pathname), ແລະຖ້າໄຟລ໌ນັ້ນບໍ່ພົບ, ແພລະຕະຟອມທີ່ຕື່ມຂໍ້ມູນໃສ່ໄຟລ໌
extensions ຈະເຮັດແນວນັ້ນແລະພະຍາຍາມຊອກຫາໄຟລ໌ທີ່ມີສ່ວນຂະຫຍາຍເຫຼົ່ານັ້ນເພີ່ມ, ຫນຶ່ງ
ໂດຍຫນຶ່ງ.

ໃນເວທີທີ່ຄ້າຍຄື DOS, ຖ້າໂຄງການບໍ່ມີຕົວແຍກໄດເລກະທໍລີ, ມັນຈະ
ທໍາອິດໃຫ້ຊອກຫາຢູ່ໃນໄດເລກະທໍລີປະຈຸບັນກ່ອນທີ່ຈະຖືກຄົ້ນຫາໃນ PATH.
ໃນເວທີ Unix, ໂຄງການຈະຖືກຄົ້ນຫາຢ່າງເຂັ້ມງວດໃນ PATH.

-t ຄື -T, ແຕ່ການກວດສອບ taint ຈະອອກຄໍາເຕືອນແທນທີ່ຈະເປັນຄວາມຜິດພາດຕາຍ. ເຫຼົ່ານີ້
ດຽວນີ້ການເຕືອນສາມາດຄວບຄຸມໄດ້ຕາມປົກກະຕິດ້ວຍ "no warnings qw(taint)".

ຫມາຍ​ເຫດ​: ນີ້ is ບໍ່ a ທົດແທນ ສໍາລັບການ "-T"! ນີ້ຫມາຍຄວາມວ່າຈະຖືກນໍາໃຊ້ ພຽງແຕ່ ເປັນການຊົ່ວຄາວ
ການຊ່ວຍເຫຼືອການພັດທະນາໃນຂະນະທີ່ຮັບປະກັນລະຫັດມໍລະດົກ: ສໍາລັບລະຫັດການຜະລິດທີ່ແທ້ຈິງແລະສໍາລັບໃຫມ່
ລະຫັດທີ່ປອດໄພຂຽນຈາກ scratch, ສະເຫມີໃຊ້ທີ່ແທ້ຈິງ -T.

-T ເປີດ "ຄວາມບໍ່ສະອາດ" ເພື່ອໃຫ້ທ່ານສາມາດທົດສອບພວກມັນໄດ້. ປົກກະຕິແລ້ວການກວດສອບເຫຼົ່ານີ້ແມ່ນເຮັດໄດ້ພຽງແຕ່ໃນເວລາທີ່
ແລ່ນ setuid ຫຼື setgid. ມັນເປັນຄວາມຄິດທີ່ດີທີ່ຈະເປີດພວກມັນຢ່າງຈະແຈ້ງສຳລັບໂຄງການ
ທີ່ດໍາເນີນການໃນນາມຂອງຄົນອື່ນທີ່ທ່ານອາດຈະບໍ່ຈໍາເປັນຕ້ອງໄວ້ວາງໃຈ, ເຊັ່ນ CGI
ໂປລແກລມຫຼືເຄື່ອງແມ່ຂ່າຍອິນເຕີເນັດທີ່ທ່ານອາດຈະຂຽນໃນ Perl. ເບິ່ງ perlsec ສໍາລັບລາຍລະອຽດ.
ສໍາລັບເຫດຜົນດ້ານຄວາມປອດໄພ, ທາງເລືອກນີ້ຕ້ອງໄດ້ຮັບການເຫັນໂດຍ Perl ຂ້ອນຂ້າງໄວ; ປົກກະຕິແລ້ວນີ້
ຫມາຍຄວາມວ່າມັນຕ້ອງປາກົດຢູ່ໃນເສັ້ນຄໍາສັ່ງຫຼື "#!" ເສັ້ນ​ສໍາ​ລັບ​ລະ​ບົບ​ທີ່​
ສະຫນັບສະຫນູນການກໍ່ສ້າງນັ້ນ.

-u ສະຫຼັບນີ້ເຮັດໃຫ້ Perl ຖິ້ມຫຼັກຫຼັງຈາກລວບລວມໂປຼແກຼມຂອງທ່ານ. ຫຼັງຈາກນັ້ນທ່ານສາມາດເຂົ້າ
ທິດສະດີເອົາ dump ຫຼັກນີ້ແລະປ່ຽນເປັນໄຟລ໌ປະຕິບັດໄດ້ໂດຍການນໍາໃຊ້ ຍົກເລີກ
ໂຄງ​ການ (ບໍ່​ໄດ້​ສະ​ຫນອງ​ໃຫ້​)​. ນີ້ເລັ່ງການເລີ່ມຕົ້ນໂດຍຄ່າໃຊ້ຈ່າຍຂອງພື້ນທີ່ດິດບາງ (ເຊິ່ງ
ທ່ານ​ສາ​ມາດ​ຫຼຸດ​ຜ່ອນ​ໂດຍ​ການ​ລອກ​ເອົາ​ການ​ປະ​ຕິ​ບັດ​ໄດ້​)​. (ຢ່າງໃດກໍ່ຕາມ, "ສະບາຍດີໂລກ" ສາມາດປະຕິບັດໄດ້
ອອກມາປະມານ 200K ໃນເຄື່ອງຂອງຂ້ອຍ.) ຖ້າທ່ານຕ້ອງການທີ່ຈະປະຕິບັດສ່ວນຫນຶ່ງຂອງເຈົ້າ
ໂຄງການກ່ອນທີ່ຈະ dumping, ການນໍາໃຊ້ dump() operator ແທນ. ຫມາຍເຫດ: ມີ
ຍົກເລີກ ເປັນແພລະຕະຟອມສະເພາະແລະອາດຈະບໍ່ມີຢູ່ໃນພອດສະເພາະຂອງ Perl.

-U ອະນຸຍາດໃຫ້ Perl ດໍາເນີນການທີ່ບໍ່ປອດໄພ. ໃນປັດຈຸບັນພຽງແຕ່ການດໍາເນີນງານ "ບໍ່ປອດໄພ" ແມ່ນ
ພະຍາຍາມຖອນການເຊື່ອມຕໍ່ໄດເລກະທໍລີໃນຂະນະທີ່ແລ່ນເປັນ superuser ແລະແລ່ນ setuid
ໂຄງ​ການ​ທີ່​ມີ​ການ​ກວດ​ສອບ taint ຕາຍ​ໄດ້​ຫັນ​ເປັນ​ການ​ເຕືອນ​. ໃຫ້ສັງເກດວ່າການເຕືອນໄພຕ້ອງເປັນ
ເປີດໃຊ້ງານພ້ອມກັບຕົວເລືອກນີ້ໃນຕົວຈິງ ຜະລິດ ການ​ເຕືອນ​ໄພ​ການ​ກວດ​ສອບ taint​.

-v ພິມສະບັບແລະ patchlevel ຂອງ perl ປະຕິບັດການຂອງທ່ານ.

-V ພິມບົດສະຫຼຸບຂອງຄ່າການຕັ້ງຄ່າ perl ທີ່ສໍາຄັນແລະຄ່າປະຈຸບັນຂອງ @INC.

-IN:configvar
ພິມເປັນ STDOUT ຄ່າຂອງຕົວແປການຕັ້ງຄ່າທີ່ມີຊື່, ດ້ວຍການຄູນ
ເມື່ອເຈົ້າ "configvar" argument ຄ້າຍຄື regex (ບໍ່ມີຕົວອັກສອນ). ຍົກ​ຕົວ​ຢ່າງ:

$ perl -V: libc
libc='/lib/libc-2.2.4.so';
$ perl -V:lib.
libs='-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc';
libc='/lib/libc-2.2.4.so';
$ perl -V:lib.*
libpth='/ usr / local / lib / lib / usr / lib';
libs='-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc';
lib_ext='.a';
libc='/lib/libc-2.2.4.so';
libperl='libperl.a' ;
....

ນອກຈາກນັ້ນ, ຈໍ້າເມັດພິເສດສາມາດຖືກນໍາໃຊ້ເພື່ອຄວບຄຸມການຈັດຮູບແບບ. ຈໍ້າສອງເມັດ
ສະກັດກັ້ນ linefeed ແລະ terminator ";", ຊ່ວຍໃຫ້ທ່ານສາມາດຝັງຄໍາຖາມເຂົ້າໄປໃນແກະ
ຄໍາສັ່ງ. (mnemonic: ຕົວແຍກ PATH ":".)

$ echo "compression-vars: " `perl -V:z.*: ` "ຢູ່ທີ່ນີ້ !"
compression-vars: zcat='' zip='zip' ຢູ່ທີ່ນີ້ !

ຈໍ້າສອງເມັດຊັ້ນນໍາຈະເອົາສ່ວນ "name=" ຂອງການຕອບສະຫນອງ, ນີ້ຊ່ວຍໃຫ້ທ່ານສ້າງແຜນທີ່
ຊື່​ທີ່​ທ່ານ​ຕ້ອງ​ການ​. (mnemonic: ປ້າຍເປົ່າ)

$ echo "goodvfork="`./perl -Ilib -V::usevfork`
goodvfork=false;

ຈໍ້າສອງເມັດນໍາຫນ້າແລະ trailing ສາມາດຖືກນໍາໃຊ້ຮ່ວມກັນຖ້າຫາກວ່າທ່ານຕ້ອງການຕົວກໍານົດການຕໍາແຫນ່ງ
ຄ່າທີ່ບໍ່ມີຊື່. ຈົ່ງຈື່ໄວ້ວ່າໃນກໍລະນີຂອງຂ້າງລຸ່ມນີ້, "PERL_API" params ແມ່ນ
ກັບຄືນໃນລໍາດັບຕົວອັກສອນ.

$ echo building_on `perl -V::osname: -V::PERL_API_.*:` ດຽວນີ້
building_on 'linux' '5' '1' '9' ດຽວນີ້

-w ພິມຄໍາເຕືອນກ່ຽວກັບການກໍ່ສ້າງທີ່ຫນ້າສົງໄສ, ເຊັ່ນ: ຊື່ຕົວແປທີ່ໄດ້ກ່າວມາພຽງແຕ່ຄັ້ງດຽວ
ແລະຕົວແປ scalar ທີ່ໃຊ້ກ່ອນທີ່ຈະຖືກກໍານົດ; redefined subroutines; ອ້າງເຖິງ
ການຈັດການໄຟລ໌ທີ່ບໍ່ໄດ້ກໍານົດ; filehandles ເປີດອ່ານເທົ່ານັ້ນທີ່ທ່ານກໍາລັງພະຍາຍາມຂຽນ
ສຸດ; ຄ່າທີ່ໃຊ້ເປັນຕົວເລກທີ່ບໍ່ມີ ເບິ່ງ ຄືຕົວເລກ; ການ​ນໍາ​ໃຊ້ array ເປັນ​ວ່າ​ມັນ​
ໄດ້ scalar ເປັນ; ຖ້າ subroutines ຂອງທ່ານ recurs ຫຼາຍກວ່າ 100 ເລິກ; ແລະ​ອື່ນໆ​ນັບ​ບໍ່​ຖ້ວນ​
ສິ່ງ​ຂອງ.

ສະວິດນີ້ພຽງແຕ່ເປີດໃຊ້ຕົວແປທົ່ວໂລກ $^W; ໂດຍປົກກະຕິ, lexically
ຂອບເຂດ "ໃຊ້ຄໍາເຕືອນ" pragma ແມ່ນມັກ. ທ່ານສາມາດປິດການທໍາງານຫຼືສົ່ງເສີມໄປສູ່ຄວາມຕາຍ
ຂໍ້ຜິດພາດສະເພາະການເຕືອນໂດຍໃຊ້ "__WARN__" hooks, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນ perlvar ແລະ "warn"
ໃນ perlfunc. ເບິ່ງ perldiag ແລະ perltrap ນຳ. ສະຖານທີ່ເຕືອນໄພລະອຽດແມ່ນ
ຍັງສາມາດໃຊ້ໄດ້ຖ້າຫາກວ່າທ່ານຕ້ອງການທີ່ຈະ manipulate ຫ້ອງຮຽນທັງຫມົດຂອງຄໍາເຕືອນ; ເບິ່ງ​ຄໍາ​ເຕືອນ​.

-W ເປີດໃຊ້ການເຕືອນທັງໝົດໂດຍບໍ່ຄໍານຶງເຖິງ "ບໍ່ມີຄໍາເຕືອນ" ຫຼື $^W. ເບິ່ງຄໍາເຕືອນ.

-X ປິດການເຕືອນທັງໝົດໂດຍບໍ່ຄໍານຶງເຖິງ "ການເຕືອນການນໍາໃຊ້" ຫຼື $^W. ເບິ່ງຄໍາເຕືອນ.

-x
-xລະບົບ
ບອກ Perl ວ່າໂປລແກລມຖືກຝັງຢູ່ໃນຕ່ອນໃຫຍ່ກວ່າຂອງຂໍ້ຄວາມທີ່ບໍ່ກ່ຽວຂ້ອງ, ເຊັ່ນ:
ໃນ​ຂໍ້​ຄວາມ​ເມລ​. ຂີ້ເຫຍື້ອຊັ້ນນໍາຈະຖືກຖິ້ມຈົນກ່ວາເສັ້ນທໍາອິດທີ່
ເລີ່ມຕົ້ນດ້ວຍ "#!" ແລະມີສາຍ "perl". ສະຫຼັບທີ່ມີຄວາມຫມາຍໃດໆກ່ຽວກັບສິ່ງນັ້ນ
ເສັ້ນຈະຖືກນຳໃຊ້.

ການອ້າງອິງທັງຫມົດກັບຕົວເລກເສັ້ນໂດຍໂຄງການ (ຄໍາເຕືອນ, ຄວາມຜິດພາດ, ... ) ຈະປະຕິບັດການ
"#!" ເສັ້ນເປັນແຖວທໍາອິດ. ດັ່ງນັ້ນການເຕືອນໄພຢູ່ໃນແຖວທີ 2 ຂອງໂຄງການ, ເຊິ່ງແມ່ນ
ໃນແຖວທີ 100 ໃນໄຟລ໌ຈະຖືກລາຍງານເປັນແຖວ 2, ບໍ່ແມ່ນເສັ້ນ 100. ນີ້ສາມາດ
ຖືກລົບລ້າງໂດຍການໃຊ້ຄໍາສັ່ງ "#line". (ເບິ່ງ "ຄວາມຄິດເຫັນເກົ່າທໍາມະດາ (ບໍ່ແມ່ນ!)" ໃນ
perlsyn)

ຖ້າຊື່ໄດເລກະທໍລີຖືກລະບຸ, Perl ຈະປ່ຽນໄປຫາໄດເລກະທໍລີນັ້ນກ່ອນທີ່ຈະດໍາເນີນການ
ໂຄງການ. ໄດ້ -x switch ຄວບຄຸມພຽງແຕ່ການກໍາຈັດຂີ້ເຫຍື້ອຊັ້ນນໍາ. ໄດ້
ໂປລແກລມຕ້ອງຖືກຢຸດດ້ວຍ "__END__" ຖ້າມີຂີ້ເຫຍື້ອຕາມຫຼັງທີ່ຈະຖືກລະເລີຍ;
ໂປລແກລມສາມາດປຸງແຕ່ງຂີ້ເຫຍື້ອທີ່ຕິດຕາມມາທັງຫມົດໂດຍຜ່ານ "DATA" filehandle
ຖ້າຕ້ອງການ.

ໄດເລກະທໍລີ, ຖ້າລະບຸ, ຈະຕ້ອງປາກົດໃນທັນທີດັ່ງຕໍ່ໄປນີ້ -x ກັບບໍ່ມີ
ແຊກ​ແຊງ​ຊ່ອງ​ຂາວ​.

ENVIRONMENT


HOME ໃຊ້ຖ້າ "chdir" ບໍ່ມີການໂຕ້ຖຽງ.

LOGDIR ໃຊ້ຖ້າ "chdir" ບໍ່ມີ argument ແລະ HOME ບໍ່ໄດ້ຕັ້ງ.

PATH ໃຊ້ໃນການປະຕິບັດຂະບວນການຍ່ອຍ, ແລະໃນການຄົ້ນຫາໂຄງການ if -S ຖືກນໍາໃຊ້.

PERL5LIB ບັນຊີລາຍຊື່ຂອງໄດເລກະທໍລີທີ່ຈະຊອກຫາໄຟລ໌ຫ້ອງສະຫມຸດ Perl ກ່ອນທີ່ຈະຊອກຫາ
ໃນຫ້ອງສະຫມຸດມາດຕະຖານແລະໄດເລກະທໍລີປະຈຸບັນ. ສະຖາປັດຕະຍະກຳສະເພາະໃດນຶ່ງ
ແລະໄດເລກະທໍລີສະເພາະລຸ້ນ, ເຊັ່ນ ສະບັບ/ຊື່/, ເວີຊັ່ນ /, ຫຼື
ຊື່ຫຼັກ/ ພາຍ​ໃຕ້​ສະ​ຖານ​ທີ່​ທີ່​ກໍາ​ນົດ​ໄວ້​ແມ່ນ​ລວມ​ອັດ​ຕະ​ໂນ​ມັດ​ຖ້າ​ຫາກ​ວ່າ​ພວກ​ເຂົາ​ເຈົ້າ​
ມີຢູ່, ດ້ວຍການຄົ້ນຫານີ້ເຮັດໃນເວລາເລີ່ມຕົ້ນນາຍພາສາ. ນອກຈາກນັ້ນ, ໃດໆ
ໄດເຣັກທໍຣີທີ່ກົງກັບລາຍການໃນ $Config{inc_version_list} ຖືກເພີ່ມເຂົ້າ.
(ປົກກະຕິແລ້ວເຫຼົ່ານີ້ແມ່ນສໍາລັບລຸ້ນ perl ທີ່ເຂົ້າກັນໄດ້ທີ່ເກົ່າກວ່າທີ່ຕິດຕັ້ງຢູ່ໃນ
ຕົ້ນໄມ້ໄດເລກະທໍລີດຽວກັນ.)

ຖ້າ PERL5LIB ບໍ່ໄດ້ຖືກກໍານົດ, PERLLIB ຖືກນໍາໃຊ້. ໄດເລກະທໍລີຖືກແຍກອອກ (ເຊັ່ນ
in PATH) ໂດຍຈໍ້າສອງເມັດໃນເວທີ Unixish ແລະໂດຍ semicolon ໃນ Windows (the
ຕົວແຍກເສັ້ນທາງທີ່ຖືກຕ້ອງຖືກມອບໃຫ້ໂດຍຄໍາສັ່ງ "perl -V:path_sep").

ໃນ​ເວ​ລາ​ທີ່​ການ​ດໍາ​ເນີນ​ການ​ກວດ​ສອບ taint​, ບໍ່​ວ່າ​ຈະ​ເປັນ​ຍ້ອນ​ວ່າ​ໂຄງ​ການ​ໄດ້​ເຮັດ​ວຽກ setuid ຫຼື​
setgid, ຫຼື -T or -t ສະວິດຖືກລະບຸ, ທັງ PERL5LIB ຫຼື PERLLIB ບໍ່ແມ່ນ
ປຶກສາຫາລື. ແທນທີ່ຈະ, ໂຄງການຄວນຈະເວົ້າວ່າ:

ໃຊ້ lib "/my/directory";

PERL5OPT ຕົວເລືອກແຖວຄໍາສັ່ງ (ສະຫຼັບ). ສະວິດໃນຕົວແປນີ້ຖືກປະຕິບັດຄືກັບວ່າ
ພວກເຂົາເຈົ້າຢູ່ໃນທຸກຄໍາສັ່ງ Perl. ພຽງແຕ່ -[CDIMUdmtwW] ສະຫຼັບແມ່ນ
ອະນຸຍາດ. ໃນ​ເວ​ລາ​ທີ່​ການ​ດໍາ​ເນີນ​ການ​ກວດ​ສອບ taint (ບໍ່​ວ່າ​ຈະ​ເປັນ​ຍ້ອນ​ວ່າ​ໂຄງ​ການ​ໄດ້​ແລ່ນ​
setuid ຫຼື setgid, ຫຼືເນື່ອງຈາກວ່າ -T or -t switch ໄດ້ຖືກນໍາໃຊ້), ຕົວແປນີ້ແມ່ນ
ບໍ່ສົນໃຈ. ຖ້າ PERL5OPT ເລີ່ມຕົ້ນດ້ວຍ -T, tainting ຈະຖືກເປີດໃຊ້ແລະຕໍ່ມາ
ຕົວເລືອກຖືກລະເລີຍ. ຖ້າ PERL5OPT ເລີ່ມຕົ້ນດ້ວຍ -t, tainting ຈະຖືກເປີດໃຊ້, ກ
ຈຸດທີ່ສາມາດຂຽນໄດ້ຖືກລຶບອອກຈາກ @INC, ແລະທາງເລືອກຕໍ່ມາໄດ້ຮັບກຽດ.

PERLIO ຊ່ອງ (ຫຼືຈໍ້າສອງເມັດ) ລາຍຊື່ຊັ້ນ PerlIO ທີ່ແຍກອອກ. ຖ້າ perl ຖືກສ້າງຂຶ້ນເພື່ອໃຊ້
ລະບົບ PerlIO ສໍາລັບ IO (ຄ່າເລີ່ມຕົ້ນ) ຊັ້ນເຫຼົ່ານີ້ມີຜົນກະທົບຕໍ່ IO ຂອງ Perl.

ມັນເປັນເລື່ອງ ທຳ ມະດາທີ່ຈະເລີ່ມຕົ້ນຊື່ຊັ້ນດ້ວຍຈໍ້າສອງເມັດ (ຕົວຢ່າງ, ":perlio")
ເພື່ອເນັ້ນຫນັກໃສ່ຄວາມຄ້າຍຄືກັນຂອງພວກເຂົາກັບ "ຄຸນລັກສະນະ". ແຕ່ລະຫັດທີ່
parses layer specification strings, ເຊິ່ງຍັງຖືກໃຊ້ເພື່ອຖອດລະຫັດ PERLIO
ສະພາບແວດລ້ອມປ່ຽນແປງໄດ້, ປະຕິບັດຕໍ່ຈໍ້າສອງເມັດເປັນຕົວແຍກ.

PERLIO ທີ່ບໍ່ໄດ້ຕັ້ງ ຫຼືຫວ່າງເປົ່າແມ່ນເທົ່າກັບຊຸດຊັ້ນຂໍ້ມູນເລີ່ມຕົ້ນຂອງທ່ານ
ເວທີ; ຕົວຢ່າງ, ":unix:perlio" ໃນລະບົບຄ້າຍ Unix ແລະ ":unix:crlf" ໃນ
Windows ແລະລະບົບອື່ນໆທີ່ຄ້າຍຄືກັບ DOS.

ບັນຊີລາຍຊື່ກາຍເປັນຄ່າເລີ່ມຕົ້ນຂອງ ທັງຫມົດ IO ຂອງ Perl. ດັ່ງນັ້ນພຽງແຕ່ການກໍ່ສ້າງໃນ
ຊັ້ນຂໍ້ມູນສາມາດປາກົດຢູ່ໃນບັນຊີລາຍຊື່ນີ້, ເປັນຊັ້ນພາຍນອກ (ເຊັ່ນ: ": encoding()")
ຕ້ອງການ IO ເພື່ອໂຫລດພວກມັນ! ເບິ່ງ "ເປີດ pragma" ສໍາລັບວິທີການເພີ່ມພາຍນອກ
ການເຂົ້າລະຫັດເປັນຄ່າເລີ່ມຕົ້ນ.

ຊັ້ນມັນເຮັດໃຫ້ຄວາມຮູ້ສຶກທີ່ຈະລວມຢູ່ໃນຕົວແປສະພາບແວດລ້ອມ PERLIO ແມ່ນ
ສະຫຼຸບໂດຍຫຍໍ້ຂ້າງລຸ່ມນີ້. ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມເບິ່ງ PerlIO.

:bytes Pseudolayer ທີ່ປ່ຽນທຸງ ":utf8". ໄປ ສໍາລັບຊັ້ນລຸ່ມນີ້;
ຄົງຈະບໍ່ເປັນປະໂຫຍດໃນສະພາບແວດລ້ອມ PERLIO ທົ່ວໂລກ
ຕົວແປ. ບາງທີທ່ານອາດຈະຄິດເຖິງ ":crlf:bytes" ຫຼື
":perlio:bytes".

:crlf ຊັ້ນທີ່ເຮັດ CRLF ກັບ "\n" ການແປພາສາທີ່ແຍກແຍະ "ຂໍ້ຄວາມ" ແລະ
ໄຟລ໌ "binary" ໃນລັກສະນະຂອງ MS-DOS ແລະລະບົບປະຕິບັດການທີ່ຄ້າຍຄືກັນ.
(ປະຈຸບັນມັນເຮັດ ບໍ່ mimic MS-DOS ເທົ່າທີ່ການປິ່ນປົວຂອງ Control-Z ເປັນ
ເປັນເຄື່ອງໝາຍປາຍທາງຂອງໄຟລ໌.)

:mmap ຊັ້ນທີ່ປະຕິບັດ "ການອ່ານ" ຂອງໄຟລ໌ໂດຍໃຊ້ ແຜນທີ່(2) ເພື່ອເຮັດໃຫ້ເປັນ
ໄຟລ໌ທັງຫມົດປາກົດຢູ່ໃນພື້ນທີ່ທີ່ຢູ່ຂອງຂະບວນການ, ແລະຫຼັງຈາກນັ້ນນໍາໃຊ້ມັນ
ເປັນ "buffer" ຂອງ PerlIO.

:perlio ນີ້ແມ່ນການປະຕິບັດຄືນໃຫມ່ຂອງ buffering stdio ທີ່ຂຽນເປັນ a
ຊັ້ນ PerlIO. ດັ່ງ​ນັ້ນ​ມັນ​ຈະ​ເອີ້ນ​ວ່າ​ຊັ້ນ​ໃດ​ກໍ​ຕາມ​ທີ່​ຢູ່​ຂ້າງ​ລຸ່ມ​ນີ້​ສໍາ​ລັບ​ການ​ຂອງ​ຕົນ​
ການດໍາເນີນງານ, ໂດຍປົກກະຕິ ":unix".

:pop ການທົດລອງ pseudolayer ທີ່ເອົາຊັ້ນເທິງສຸດ. ໃຊ້ກັບ
ການດູແລດຽວກັນທີ່ສະຫງວນໄວ້ສໍາລັບ nitroglycerine.

:raw ເປັນ pseudolayer ທີ່ manipulates ຊັ້ນອື່ນໆ. ນຳໃຊ້ ":raw"
ຊັ້ນແມ່ນເທົ່າກັບການເອີ້ນ "binmode($fh)". ມັນເຮັດໃຫ້ນ້ໍາ
ຜ່ານແຕ່ລະ byte ຕາມທີ່ບໍ່ໄດ້ແປ. ໂດຍສະເພາະ, ທັງສອງ CRLF
ການແປພາສາແລະການເຂົ້າໃຈ ":utf8" ຈາກທ້ອງຖິ່ນຖືກປິດໃຊ້ງານ.

ບໍ່ເຫມືອນກັບສະບັບກ່ອນຫນ້າຂອງ Perl, ":raw" ແມ່ນ ບໍ່ ພຽງແຕ່ປີ້ນກັບກັນຂອງ
":crlf": ຊັ້ນອື່ນໆທີ່ຈະສົ່ງຜົນກະທົບຕໍ່ລັກສະນະຖານສອງຂອງ
ການຖ່າຍທອດອອກ ຫຼືຖືກປິດການນຳໃຊ້ເຊັ່ນກັນ.

:stdio ຊັ້ນນີ້ສະຫນອງການໂຕ້ຕອບ PerlIO ໂດຍການຫໍ່ ANSI C ຂອງລະບົບ
"stdio" ໂທຫ້ອງສະຫມຸດ. ຊັ້ນໃຫ້ທັງ buffering ແລະ IO. ຫມາຍ​ເຫດ​
ວ່າຊັ້ນ ":stdio" ເຮັດ ບໍ່ ເຮັດການແປພາສາ CRLF ເຖິງແມ່ນວ່ານັ້ນແມ່ນ
ພຶດຕິກໍາປົກກະຕິຂອງເວທີ. ທ່ານຈະຕ້ອງການ ": crlf" ຊັ້ນຂ້າງເທິງ
ມັນເຮັດແນວນັ້ນ.

:unix ຊັ້ນຕ່ໍາທີ່ເອີ້ນ "ອ່ານ", "ຂຽນ", "lseek", ແລະອື່ນໆ.

:utf8 pseudolayer ທີ່ເຮັດໃຫ້ທຸງຢູ່ໃນຊັ້ນລຸ່ມນີ້ເພື່ອບອກ Perl ວ່າ
ຜົນຜະລິດຄວນຈະຢູ່ໃນ utf8 ແລະວັດສະດຸປ້ອນນັ້ນຄວນຈະຖືກຖືວ່າເປັນແລ້ວ
ໃນຮູບແບບ utf8 ທີ່ຖືກຕ້ອງ. ຄໍາເຕືອນ: It ບໍ່ ບໍ່ ໃຫ້​ກວດ​ເບິ່ງ ສໍາລັບການ ຄວາມຖືກຕ້ອງ ແລະ as
ດັ່ງກ່າວ ຄວນ be ຈັດການ ກັບ ທີ່ຮ້າ​​ຍ ລະມັດລະວັງ ສໍາລັບການ ການປ້ອນຂໍ້ມູນ, ເນື່ອງຈາກວ່າ
ຄວາມປອດໄພ ລະເມີດ ສາມາດເຮັດໄດ້ ເກີດຂຶ້ນ ກັບ ບໍ່ສັ້ນທີ່ສຸດ UTF-8 ການເຂົ້າລະຫັດ, ແລະອື່ນໆ
ໂດຍທົ່ວໄປແລ້ວ ":encoding(utf8)" ແມ່ນທາງເລືອກທີ່ດີທີ່ສຸດໃນເວລາອ່ານ UTF-8
ຂໍ້ມູນເຂົ້າລະຫັດ.

:win32 ໃນເວທີ Win32 ນີ້ ທົດລອງ layer ໃຊ້ native "handle" IO
ແທນທີ່ຈະເປັນຊັ້ນຕົວອະທິບາຍໄຟລ໌ຕົວເລກຄືກັບ Unix. ເປັນທີ່ຮູ້ຈັກ
buggy ໃນການປ່ອຍນີ້ (5.14).

ຊຸດຊັ້ນຂໍ້ມູນເລີ່ມຕົ້ນຄວນໃຫ້ຜົນໄດ້ຮັບທີ່ຍອມຮັບໄດ້ໃນທຸກເວທີ

ສໍາລັບເວທີ Unix ທີ່ຈະທຽບເທົ່າກັບ "unix perlio" ຫຼື "stdio".
Configure ຖືກຕັ້ງຄ່າເພື່ອຕ້ອງການການປະຕິບັດ "stdio" ຖ້າລະບົບຂອງ
ຫ້ອງສະຫມຸດສະຫນອງການເຂົ້າເຖິງໄວກັບ buffer; ຖ້າບໍ່ດັ່ງນັ້ນ, ມັນໃຊ້ "unix
perlio" ການ​ປະ​ຕິ​ບັດ​.

ໃນ Win32 ຄ່າເລີ່ມຕົ້ນໃນລຸ້ນນີ້ (5.14) ແມ່ນ "unix crlf". "stdio" ຂອງ Win32
ມີຈໍານວນຂອງຂໍ້ບົກພ່ອງ / ຄຸນສົມບັດທີ່ບໍ່ຖືກຕ້ອງສໍາລັບ Perl IO ເຊິ່ງແມ່ນຂຶ້ນກັບ
ຮຸ່ນແລະຜູ້ຂາຍຂອງ C compiler. ການນໍາໃຊ້ຊັ້ນ "crlf" ຂອງພວກເຮົາເອງເປັນ
buffer ຫຼີກເວັ້ນບັນຫາເຫຼົ່ານັ້ນແລະເຮັດໃຫ້ສິ່ງຕ່າງໆເປັນເອກະພາບຫຼາຍ. ຊັ້ນ "crf".
ສະຫນອງການແປງ CRLF ເຊັ່ນດຽວກັນກັບ buffering.

ລຸ້ນນີ້ (5.14) ໃຊ້ "unix" ເປັນຊັ້ນລຸ່ມສຸດຂອງ Win32, ແລະອື່ນໆ
ໃຊ້ C compiler's numeric descriptor routines. ມີ
ຊັ້ນ "win32" ແບບພື້ນເມືອງທົດລອງ, ເຊິ່ງຄາດວ່າຈະໄດ້ຮັບການປັບປຸງແລະຄວນ
ໃນທີ່ສຸດກາຍເປັນຄ່າເລີ່ມຕົ້ນພາຍໃຕ້ Win32.

ຕົວແປສະພາບແວດລ້ອມ PERLIO ແມ່ນຖືກລະເລີຍຢ່າງສົມບູນເມື່ອ Perl ຖືກແລ່ນເຂົ້າ
ຮູບ​ແບບ​ການ taint​.

PERLIO_DEBUG
ຖ້າຕັ້ງເປັນຊື່ຂອງໄຟລ໌ຫຼືອຸປະກອນ, ການດໍາເນີນງານສະເພາະໃດຫນຶ່ງຂອງລະບົບຍ່ອຍ PerlIO
ຈະຖືກບັນທຶກໄວ້ໃນໄຟລ໌ນັ້ນ, ເຊິ່ງຖືກເປີດຢູ່ໃນໂໝດເພີ່ມເຕີມ. ການນໍາໃຊ້ປົກກະຕິແມ່ນ
ໃນ Unix:

% env PERLIO_DEBUG=/dev/tty perl script ...

ແລະພາຍໃຕ້ Win32, ເທົ່າກັບປະມານ:

> ຕັ້ງ PERLIO_DEBUG=CON
perl script ...

ຟັງຊັນນີ້ຖືກປິດໃຊ້ງານສໍາລັບ scripts setuid ແລະສໍາລັບ scripts ດໍາເນີນການກັບ -T.

PERLLIB ບັນຊີລາຍຊື່ຂອງໄດເລກະທໍລີທີ່ຈະຊອກຫາໄຟລ໌ຫ້ອງສະຫມຸດ Perl ກ່ອນທີ່ຈະຊອກຫາ
ໃນຫ້ອງສະຫມຸດມາດຕະຖານແລະໄດເລກະທໍລີປະຈຸບັນ. ຖ້າ PERL5LIB ຖືກກໍານົດ,
PERLLIB ບໍ່ໄດ້ໃຊ້.

ຕົວແປສະພາບແວດລ້ອມ PERLLIB ແມ່ນຖືກລະເລີຍຢ່າງສົມບູນເມື່ອ Perl ຖືກແລ່ນເຂົ້າ
ຮູບ​ແບບ​ການ taint​.

PERL5DB ຄໍາສັ່ງທີ່ໃຊ້ໃນການໂຫລດລະຫັດດີບັກ. ຄ່າເລີ່ມຕົ້ນແມ່ນ:

BEGIN { ຕ້ອງການ "perl5db.pl" }

ຕົວແປສະພາບແວດລ້ອມ PERL5DB ຖືກນໍາໃຊ້ພຽງແຕ່ເມື່ອ Perl ເລີ່ມຕົ້ນດ້ວຍເປົ່າ
-d ສະຫຼັບ.

PERL5DB_THREADED
ຖ້າຕັ້ງເປັນຄ່າທີ່ແທ້ຈິງ, ສະແດງໃຫ້ຜູ້ດີບັກຮູ້ວ່າລະຫັດຖືກດີບັກ
ໃຊ້ກະທູ້.

PERL5SHELL (ສະເພາະກັບພອດ Win32)
ໃນພອດ Win32 ເທົ່ານັ້ນ, ອາດຈະຖືກຕັ້ງເປັນ shell ທາງເລືອກທີ່ Perl ຕ້ອງໃຊ້
ພາຍໃນສໍາລັບການປະຕິບັດຄໍາສັ່ງ "backtick" ຫຼື ລະບົບ(). ຄ່າເລີ່ມຕົ້ນແມ່ນ "cmd.exe
/x/d/c" ໃນ WindowsNT ແລະ "command.com /c" ໃນ Windows95. ມູນຄ່າແມ່ນ
ພິ​ຈາ​ລະ​ນາ​ຫ່າງ​ໄກ​ສອກ​ຫຼີກ​. ນຳໜ້າຕົວລະຄອນໃດນຶ່ງທີ່ຕ້ອງໄດ້ຮັບການປົກປ້ອງ,
ເຊັ່ນຊ່ອງຫວ່າງ ຫຼື backslash, ກັບ backslash ອື່ນ.

ໃຫ້ສັງເກດວ່າ Perl ບໍ່ໄດ້ໃຊ້ COMSPEC ສໍາລັບຈຸດປະສົງນີ້ເພາະວ່າ COMSPEC ມີຄວາມສູງ
ລະ​ດັບ​ຂອງ​ການ​ປ່ຽນ​ແປງ​ໃນ​ບັນ​ດາ​ຜູ້​ຊົມ​ໃຊ້​, ເຮັດ​ໃຫ້​ມີ​ຄວາມ​ກັງ​ວົນ​ກ່ຽວ​ກັບ​ການ Portability​. ນອກຈາກນັ້ນ,
Perl ສາມາດໃຊ້ shell ທີ່ອາດຈະບໍ່ເຫມາະສໍາລັບການນໍາໃຊ້ແບບໂຕ້ຕອບ, ແລະການຕັ້ງຄ່າ
COMSPEC ກັບຫອຍດັ່ງກ່າວອາດຈະແຊກແຊງການເຮັດວຽກທີ່ເຫມາະສົມຂອງອື່ນໆ
ບັນດາໂຄງການ (ເຊິ່ງປົກກະຕິແລ້ວເບິ່ງຢູ່ໃນ COMSPEC ເພື່ອຊອກຫາ shell ເຫມາະສໍາລັບການໂຕ້ຕອບ
ໃຊ້).

ກ່ອນ Perl 5.10.0 ແລະ 5.8.8, PERL5SHELL ບໍ່ຖືກກວດເຊັກເມື່ອແລ່ນ.
ຄໍາສັ່ງພາຍນອກ. ຂໍແນະນຳໃຫ້ທ່ານຕັ້ງ (ຫຼືລຶບ) ຢ່າງຈະແຈ້ງ.
$ENV{PERL5SHELL} ໃນ​ເວ​ລາ​ທີ່​ແລ່ນ​ຢູ່​ໃນ​ຮູບ​ແບບ taint ພາຍ​ໃຕ້ Windows​.

PERL_ALLOW_NON_IFS_LSP (ສະເພາະກັບພອດ Win32)
ຕັ້ງເປັນ 1 ເພື່ອອະນຸຍາດໃຫ້ໃຊ້ LSPs ທີ່ບໍ່ເຂົ້າກັນໄດ້ກັບ IFS (Layered Service
ຜູ້ໃຫ້ບໍລິການ). Perl ປົກກະຕິຊອກຫາ LSP ທີ່ເຂົ້າກັນໄດ້ກັບ IFS ເພາະວ່ານີ້ແມ່ນ
ຕ້ອງ​ການ​ສໍາ​ລັບ​ການ emulation ຂອງ Windows sockets ເປັນ filehandles ທີ່​ແທ້​ຈິງ​. ແນວໃດກໍ່ຕາມ,
ນີ້ອາດຈະເຮັດໃຫ້ເກີດບັນຫາຖ້າຫາກວ່າທ່ານມີ firewall ເຊັ່ນ: McAfee ຜູ້ປົກຄອງ, ທີ່
ຮຽກຮ້ອງໃຫ້ທຸກແອັບພລິເຄຊັນໃຊ້ LSP ຂອງມັນ ແຕ່ອັນນັ້ນບໍ່ເຂົ້າກັນໄດ້ກັບ IFS,
ເນື່ອງຈາກວ່າ Perl ປົກກະຕິແລ້ວຈະຫຼີກເວັ້ນການນໍາໃຊ້ LSP ດັ່ງກ່າວ.

ການຕັ້ງຄ່າສະພາບແວດລ້ອມນີ້ຕົວແປເປັນ 1 ຫມາຍຄວາມວ່າ Perl ພຽງແຕ່ຈະໃຊ້
LSP ທີ່ເຫມາະສົມທໍາອິດທີ່ລະບຸໄວ້ໃນລາຍການ, ເຊິ່ງເກັບຮັກສາໄວ້ McAfee ຜູ້ປົກຄອງ
ມີຄວາມສຸກ - ແລະໃນກໍລະນີໂດຍສະເພາະ Perl ຍັງເຮັດວຽກເກີນໄປເພາະວ່າ McAfee
ຜູ້ປົກຄອງLSP ຂອງແທ້ຈິງແລ້ວຫຼິ້ນເກມອື່ນໆທີ່ອະນຸຍາດໃຫ້ຄໍາຮ້ອງສະຫມັກທີ່ຕ້ອງການ
ຄວາມເຂົ້າກັນໄດ້ຂອງ IFS ເພື່ອເຮັດວຽກ.

PERL_DEBUG_MSTATS
ທີ່ກ່ຽວຂ້ອງພຽງແຕ່ຖ້າ Perl ຖືກລວບລວມດ້ວຍ "malloc" ລວມກັບ Perl
ການແຈກຢາຍ; ນັ້ນແມ່ນ, ຖ້າ "perl -V: d_mymalloc" ແມ່ນ "ກໍານົດ".

ຖ້າຕັ້ງໄວ້, ນີ້ຈະຖິ້ມສະຖິຕິຄວາມຊົງຈໍາຫຼັງຈາກປະຕິບັດ. ຖ້າຕັ້ງເປັນ
ຈຳນວນເຕັມທີ່ໃຫຍ່ກວ່າໜຶ່ງ, ຍັງຖິ້ມສະຖິຕິຄວາມຊົງຈຳຫຼັງຈາກການລວບລວມ.

PERL_DESTRUCT_LEVEL
ທີ່ກ່ຽວຂ້ອງພຽງແຕ່ຖ້າຫາກວ່າການປະຕິບັດ Perl ຂອງທ່ານຖືກສ້າງຂຶ້ນດ້ວຍ - ດີບັກ, ນີ້
ຄວບຄຸມພຶດຕິກໍາການທໍາລາຍໂລກຂອງວັດຖຸແລະການອ້າງອີງອື່ນໆ.
ເບິ່ງ "PERL_DESTRUCT_LEVEL" ໃນ perlhacktips ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.

PERL_DL_NONLAZY
ຕັ້ງເປັນ "1" ເພື່ອໃຫ້ Perl ແກ້ໄຂ ທັງຫມົດ ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດເມື່ອມັນໂຫຼດໄດນາມິກ
ຫໍສະໝຸດ. ພຶດຕິກໍາເລີ່ມຕົ້ນແມ່ນການແກ້ໄຂສັນຍາລັກໃນເວລາທີ່ພວກເຂົາຖືກນໍາໃຊ້.
ການຕັ້ງຄ່າຕົວແປນີ້ແມ່ນເປັນປະໂຫຍດໃນລະຫວ່າງການທົດສອບການຂະຫຍາຍ, ຍ້ອນວ່າມັນຮັບປະກັນ
ທີ່ທ່ານໄດ້ຮັບຂໍ້ຜິດພາດກ່ຽວກັບຊື່ຟັງຊັນທີ່ສະກົດຜິດເຖິງແມ່ນວ່າຊຸດທົດສອບ
ບໍ່ໄດ້ໂທຫາພວກເຂົາ.

PERL_ENCODING
ຖ້າໃຊ້ "ໃຊ້ການເຂົ້າລະຫັດ" pragma ໂດຍບໍ່ມີຊື່ການເຂົ້າລະຫັດທີ່ຊັດເຈນ, ໄດ້
ຕົວແປສະພາບແວດລ້ອມ PERL_ENCODING ໄດ້ຖືກປຶກສາຫາລືສໍາລັບຊື່ການເຂົ້າລະຫັດ.

PERL_HASH_SEED
(ນັບຕັ້ງແຕ່ Perl 5.8.1, semantics ໃຫມ່ໃນ Perl 5.18.0) ໃຊ້ເພື່ອ override the
ການສຸ່ມການທໍາງານ hash ພາຍໃນຂອງ Perl. ມູນຄ່າແມ່ນສະແດງອອກໃນ
ເລກຖານສິບຫົກ, ແລະອາດຈະລວມເອົາ 0x ນຳໜ້າ. ຮູບແບບທີ່ຖືກຕັດຖືກປະຕິບັດເປັນ
ເຖິງແມ່ນວ່າພວກມັນຖືກຕໍ່ທ້າຍດ້ວຍ 0's ພຽງພໍຕາມຄວາມຕ້ອງການ.

ຖ້າຕົວເລືອກຖືກສະໜອງໃຫ້, ແລະ "PERL_PERTURB_KEYS" ບໍ່ໄດ້ຖືກຕັ້ງ, ມູນຄ່າຂອງ
'0' ໝາຍເຖິງ "PERL_PERTURB_KEYS=0" ແລະຄ່າອື່ນໆໝາຍເຖິງ
"PERL_PERTURB_KEYS=2".

ກະລຸນາ ຫມາຍ​ເຫດ​: ໄດ້ hash ແກ່ນ is ລະອຽດອ່ອນ ຂໍ້ມູນຂ່າວສານ. Hashes ແມ່ນ randomized ກັບ
ປົກປ້ອງການໂຈມຕີໃນທ້ອງຖິ່ນແລະຫ່າງໄກສອກຫຼີກຕໍ່ກັບລະຫັດ Perl. ດ້ວຍຕົນເອງ
ການສ້າງຕັ້ງເມັດພັນ, ການປົກປ້ອງນີ້ອາດຈະສູນເສຍບາງສ່ວນຫຼືຫມົດ.

ເບິ່ງ "ການໂຈມຕີຄວາມຊັບຊ້ອນຂອງ Algorithmic" ໃນ perlsec, "PERL_PERTURB_KEYS", ແລະ
"PERL_HASH_SEED_DEBUG" ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.

PERL_PERTURB_KEYS
(ນັບຕັ້ງແຕ່ Perl 5.18.0) ຕັ້ງເປັນ "0" ຫຼື "NO" ຫຼັງຈາກນັ້ນ, ລະຫັດຂ້າມຜ່ານຈະເປັນ.
ສາມາດເຮັດຊ້ຳໄດ້ຈາກການແລ່ນໄປຫາແລ່ນ PERL_HASH_SEED ດຽວກັນ. ແຊກເຂົ້າໄປໃນ hash
ຈະບໍ່ປ່ຽນແປງຄໍາສັ່ງ, ຍົກເວັ້ນເພື່ອໃຫ້ພື້ນທີ່ເພີ່ມເຕີມໃນ hash. ເມື່ອ​ໃດ​
ບວກກັບການຕັ້ງຄ່າ PERL_HASH_SEED ໂໝດນີ້ແມ່ນໃກ້ກັບ 5.18 ກ່ອນ
ພຶດຕິກໍາທີ່ເຈົ້າສາມາດໄດ້ຮັບ.

ເມື່ອຕັ້ງເປັນ "1" ຫຼື "RANDOM" ຫຼັງຈາກນັ້ນ, ລະຫັດຂ້າມຜ່ານຈະຖືກສຸ່ມ. ທຸກໆ
ເວລາທີ່ hash ເຂົ້າໄປໃນຄໍາສັ່ງທີ່ສໍາຄັນຈະມີການປ່ຽນແປງໃນຮູບແບບແບບສຸ່ມ.
ຄໍາສັ່ງອາດຈະບໍ່ສາມາດເຮັດຊ້ໍາໄດ້ໃນໂຄງການຕໍ່ໄປນີ້ດໍາເນີນການເຖິງແມ່ນວ່າ
PERL_HASH_SEED ຖືກລະບຸ. ນີ້ແມ່ນຮູບແບບເລີ່ມຕົ້ນຂອງ perl.

ເມື່ອຕັ້ງເປັນ "2" ຫຼື "DETERMINISTIC" ຫຼັງຈາກນັ້ນການໃສ່ກະແຈເຂົ້າໄປໃນ hash ຈະເຮັດໃຫ້ເກີດ
ຄໍາ​ສັ່ງ​ທີ່​ສໍາ​ຄັນ​ທີ່​ຈະ​ມີ​ການ​ປ່ຽນ​ແປງ​, ແຕ່​ໃນ​ວິ​ທີ​ການ​ທີ່​ເຮັດ​ເລ​ື້ມ​ຄືນ​ຈາກ​ການ​ດໍາ​ເນີນ​ງານ​ຂອງ​ໂຄງ​ການ​
ດໍາເນີນໂຄງການ.

ຫມາຍ​ເຫດ​: ການນໍາໃຊ້ທາງເລືອກນີ້ແມ່ນຖືວ່າບໍ່ປອດໄພ, ແລະມີຈຸດປະສົງພຽງແຕ່ສໍາລັບ
ການດີບັກພຶດຕິກຳທີ່ບໍ່ກຳນົດໃນຟັງຊັນຂອງ Perl. ຢ່າໃຊ້ມັນຢູ່ໃນ
ການຜະລິດ.

ເບິ່ງ "ການໂຈມຕີຄວາມຊັບຊ້ອນຂອງ Algorithmic" ໃນ perlsec ແລະ "PERL_HASH_SEED" ແລະ
"PERL_HASH_SEED_DEBUG" ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ. ທ່ານສາມາດໄດ້ຮັບແລະກໍານົດທີ່ສໍາຄັນ
ຫນ້າກາກທາງຜ່ານສໍາລັບ hash ສະເພາະໂດຍໃຊ້ "hash_traversal_mask()"
ຟັງຊັນຈາກ Hash::Util.

PERL_HASH_SEED_DEBUG
(ນັບຕັ້ງແຕ່ Perl 5.8.1.) ຕັ້ງເປັນ "1" ເພື່ອສະແດງ (ເພື່ອ STDERR) ຂໍ້ມູນກ່ຽວກັບ
ການທໍາງານຂອງ hash, ແກ່ນ, ແລະປະເພດຂອງການສຸ່ມ traversal ທີ່ສໍາຄັນແມ່ນມີຜົນກະທົບ
ໃນຕອນເລີ່ມຕົ້ນຂອງການປະຕິບັດ. ອັນນີ້, ຮວມກັບ "PERL_HASH_SEED" ແລະ
"PERL_PERTURB_KEYS" ມີຈຸດປະສົງເພື່ອຊ່ວຍໃນການດີບັກພຶດຕິກຳທີ່ບໍ່ກຳນົດເອງ
ເກີດມາຈາກການສຸ່ມ hash.

ຫມາຍ​ເຫດ​ ວ່າຂໍ້ມູນໃດໆກ່ຽວກັບຫນ້າທີ່ hash, ໂດຍສະເພາະແມ່ນແກ່ນ hash
ລະອຽດອ່ອນ ຂໍ້ມູນຂ່າວສານ: ໂດຍການຮູ້ມັນ, ຄົນເຮົາສາມາດສ້າງການໂຈມຕີປະຕິເສດການບໍລິການ
ຕໍ່ກັບລະຫັດ Perl, ເຖິງແມ່ນວ່າຫ່າງໄກສອກຫຼີກ; ເບິ່ງ "ການ​ໂຈມ​ຕີ​ສະ​ລັບ​ສັບ​ຊ້ອນ Algorithmic​" ໃນ​
perlsec ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ. Do ບໍ່ ເປີດເຜີຍ ໄດ້ hash ແກ່ນ ກັບປະຊາຊົນຜູ້ທີ່
ບໍ່ຈໍາເປັນຕ້ອງຮູ້. ເບິ່ງ "hash_seed()" ແລະ "key_traversal_mask()" ໃນ
Hash::Util.

ຕົວຢ່າງຜົນຜະລິດອາດຈະເປັນ:

HASH_FUNCTION = ONE_AT_A_TIME_HARD HASH_SEED = 0x652e9b9349a7a032 PERTURB_KEYS = 1 (RANDOM)

PERL_MEM_LOG
ຖ້າ Perl ຂອງທ່ານຖືກຕັ້ງຄ່າດ້ວຍ -Accflags=-DPERL_MEM_LOG, ການ​ຕັ້ງ​ຄ່າ​
ຕົວແປສະພາບແວດລ້ອມ "PERL_MEM_LOG" ເປີດໃຊ້ການບັນທຶກຂໍ້ຄວາມດີບັກ. ມູນຄ່າ
ມີ​ຮູບ​ແບບ "ຕົວເລກ>[m][s][t]", ບ່ອນທີ່ "ເລກ" ແມ່ນໝາຍເລກອະທິບາຍໄຟລ໌
ທ່ານ​ຕ້ອງ​ການ​ທີ່​ຈະ​ຂຽນ​ເຖິງ (2 ແມ່ນ​ຄ່າ​ເລີ່ມ​ຕົ້ນ​)​, ແລະ​ການ​ປະ​ສົມ​ຂອງ​ຕົວ​ອັກ​ສອນ​ລະ​ບຸ​
ທີ່​ທ່ານ​ຕ້ອງ​ການ​ຂໍ້​ມູນ​ກ່ຽວ​ກັບ (m​)emory ແລະ / ຫຼື (s​)v​, ທາງ​ເລືອກ​ທີ່​ມີ​
(t​) ການ​ສະ​ແດງ​ໃຫ້​ເຫັນ​. ຕົວຢ່າງ, "PERL_MEM_LOG=1mst" ບັນທຶກຂໍ້ມູນທັງໝົດເພື່ອ stdout.
ທ່ານ​ສາ​ມາດ​ຂຽນ​ໃຫ້​ຜູ້​ອະ​ທິ​ບາຍ​ໄຟລ​໌​ອື່ນໆ​ທີ່​ເປີດ​ໄດ້​ໃນ​ຫຼາຍ​ວິ​ທີ​ການ​:

$3>foo3 PERL_MEM_LOG=3m perl ...

PERL_ROOT (ສະເພາະກັບຜອດ VMS)
ຊື່ທີ່ມີເຫດຜົນທີ່ມີການແປແບບປິດບັງທີ່ປະກອບດ້ວຍ Perl ແລະເຫດຜົນ
ອຸປະກອນສໍາລັບເສັ້ນທາງ @INC ໃນ VMS ເທົ່ານັ້ນ. ຊື່ເຫດຜົນອື່ນໆທີ່ມີຜົນກະທົບ Perl on
VMS ລວມມີ PERLSHR, PERL_ENV_TABLES, ແລະ SYS$TIMEZONE_DIFFERENTIAL, ແຕ່ແມ່ນ
ທາງເລືອກແລະປຶກສາຫາລືຕື່ມອີກໃນ perlvms ແລະໃນ README.vms ໃນແຫຼ່ງ Perl
ການແຈກຢາຍ.

PERL_SIGNALS
ມີຢູ່ໃນ Perls 5.8.1 ແລະຕໍ່ມາ. ຖ້າຕັ້ງເປັນ "ບໍ່ປອດໄພ", pre-Perl-5.8.0
ພຶດຕິກໍາສັນຍານ (ທີ່ທັນທີທັນໃດແຕ່ບໍ່ປອດໄພ) ຖືກຟື້ນຟູຄືນມາ. ຖ້າຕັ້ງເປັນ
"ປອດໄພ", ຫຼັງຈາກນັ້ນປອດໄພ (ແຕ່ເລື່ອນ) ສັນຍານຖືກນໍາໃຊ້. ເບິ່ງ "ສັນຍານການເລື່ອນເວລາ
(ສັນຍານຄວາມປອດໄພ)" ໃນ perlipc.

PERL_UNICODE
ທຽບເທົ່າ -C ສະຫຼັບເສັ້ນຄໍາສັ່ງ. ໃຫ້ສັງເກດວ່ານີ້ບໍ່ແມ່ນ boolean
ຕົວແປ. ການຕັ້ງຄ່ານີ້ເປັນ "1" ບໍ່ແມ່ນວິທີທີ່ຖືກຕ້ອງທີ່ຈະ "ເປີດໃຊ້ Unicode"
(ອັນ​ໃດ​ກໍ​ຕາມ​ທີ່​ຈະ​ຫມາຍ​ຄວາມ​ວ່າ​)​. ທ່ານສາມາດນໍາໃຊ້ "0" ເພື່ອ "ປິດການໃຊ້ງານ Unicode", ເຖິງແມ່ນວ່າ (ຫຼື
ອີກທາງເລືອກທີ່ບໍ່ໄດ້ຕັ້ງ PERL_UNICODE ໃນແກະຂອງເຈົ້າກ່ອນທີ່ຈະເລີ່ມ Perl). ເບິ່ງ
ລາຍ​ລະ​ອຽດ​ຂອງ​ -C ສະຫຼັບສຳລັບຂໍ້ມູນເພີ່ມເຕີມ.

SYS$LOGIN (ສະເພາະກັບພອດ VMS)
ໃຊ້ຖ້າ chdir ບໍ່ມີ argument ແລະ HOME ແລະ LOGDIR ບໍ່ໄດ້ຕັ້ງ.

Perl ຍັງມີຕົວແປສະພາບແວດລ້ອມທີ່ຄວບຄຸມວິທີທີ່ Perl ຈັດການກັບຂໍ້ມູນສະເພາະ
ພາສາທໍາມະຊາດໂດຍສະເພາະ; ເບິ່ງ perlocale.

Perl ແລະໂມດູນແລະອົງປະກອບຕ່າງໆ, ລວມທັງກອບການທົດສອບຂອງມັນ, ບາງຄັ້ງອາດຈະ
ໃຊ້ຕົວແປສະພາບແວດລ້ອມອື່ນໆທີ່ແນ່ນອນ. ບາງສ່ວນຂອງເຫຼົ່ານີ້ແມ່ນສະເພາະກັບ a
ເວທີໂດຍສະເພາະ. ກະລຸນາປຶກສາກັບເອກະສານໂມດູນທີ່ເຫມາະສົມແລະໃດໆ
ເອກະສານສໍາລັບເວທີຂອງທ່ານ (ເຊັ່ນ perlsolaris, perllinux, perlmacosx, perlwin32, ແລະອື່ນໆ)
ສໍາລັບຕົວແປທີ່ peculiar ກັບສະຖານະການສະເພາະເຫຼົ່ານັ້ນ.

Perl ເຮັດໃຫ້ຕົວແປສະພາບແວດລ້ອມທັງຫມົດສາມາດໃຊ້ໄດ້ກັບໂຄງການທີ່ຖືກປະຕິບັດ, ແລະຜ່ານ
ເຫຼົ່ານີ້ພ້ອມກັບຂະບວນການເດັກນ້ອຍໃດໆທີ່ມັນເລີ່ມຕົ້ນ. ຢ່າງໃດກໍຕາມ, ໂຄງການທີ່ເຮັດວຽກ setuid ຈະເຮັດ
ດີທີ່ຈະປະຕິບັດເສັ້ນຕໍ່ໄປນີ້ກ່ອນທີ່ຈະເຮັດຫຍັງອີກ, ພຽງແຕ່ຮັກສາຄົນ
ຄວາມຊື່ສັດ:

$ENV{PATH} = "/ ຖັງ:/ usr / ຖັງ"; # ຫຼືອັນໃດກໍໄດ້ທີ່ທ່ານຕ້ອງການ
$ENV{SHELL} = "/ ຖັງ / sh" ຖ້າມີ $ENV{SHELL};
ລຶບ @ENV{qw(IFS CDPATH ENV BASH_ENV)};

ໃຊ້ perlrun ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

  • 1
    VBA-M (ເກັບໄວ້ - ຕອນນີ້ຢູ່ໃນ Github)
    VBA-M (ເກັບໄວ້ - ຕອນນີ້ຢູ່ໃນ Github)
    ໂຄງການໄດ້ຍ້າຍໄປ
    https://github.com/visualboyadvance-m/visualboyadvance-m
    ຄຸນ​ລັກ​ສະ​ນະ: Cheat creationsave statesmulti
    ລະບົບ, ສະຫນັບສະຫນູນ gba, gbc, gb, sgb,
    sgb2Tu...
    ດາວໂຫລດ VBA-M (ເກັບໄວ້ - ຕອນນີ້ຢູ່ໃນ Github)
  • 2
    Stacer
    Stacer
    Linux System Optimizer ແລະການຕິດຕາມ
    Github Repository:
    https://github.com/oguzhaninan/Stacer.
    ຜູ້ຊົມ: ຜູ້ໃຊ້ສຸດທ້າຍ/ເດັສທັອບ. ຜູ້ໃຊ້
    ການໂຕ້ຕອບ: Qt. ການຂຽນໂປລແກລມ La...
    ດາວໂຫລດ Stacer
  • 3
    ໝາກກ້ຽງ
    ໝາກກ້ຽງ
    Fork ຂອງ TeamWinRecoveryProject(TWRP)
    ມີຫນ້າທີ່ເພີ່ມເຕີມຈໍານວນຫຼາຍ, ການອອກແບບໃຫມ່
    ແລະຄຸນສົມບັດເພີ່ມເຕີມ: ຮອງຮັບ Treble ແລະ
    ROMs ທີ່ບໍ່ແມ່ນ Treble ໃໝ່ຫຼ້າສຸດ Oreo kernel,
    ສ້າງ...
    ດາວໂຫລດ OrangeFox
  • 4
    itop - ITSM CMDB OpenSource
    itop - ITSM CMDB OpenSource
    ປະ​ຕູ​ປະ​ຕິ​ບັດ​ການ IT​: ເປັນ​ການ​ເປີດ​ຄົບ​ຖ້ວນ​ສົມ​ບູນ​
    ແຫຼ່ງ, ITIL, ການບໍລິການທີ່ອີງໃສ່ເວັບ
    ເຄື່ອງ​ມື​ການ​ຄຸ້ມ​ຄອງ​ລວມ​ທັງ​ຫມົດ​
    CMDB ທີ່ສາມາດປັບແຕ່ງໄດ້, ລະບົບ helpdesk ແລະ
    ຜູ້​ຊາຍ​ເອ​ກະ​ສານ ...
    ດາວໂຫລດເທິງ - ITSM CMDB OpenSource
  • 5
    Clementine
    Clementine
    Clementine ເປັນດົນຕີຫຼາຍເວທີ
    ຜູ້ນແລະຜູ້ຈັດຫ້ອງສະຫມຸດໄດ້ຮັບການດົນໃຈໂດຍ
    Amarok 1.4. ມັນ​ມີ​ໄວ​ແລະ​
    ການ​ໂຕ້​ຕອບ​ງ່າຍ​ທີ່​ຈະ​ນໍາ​ໃຊ້​, ແລະ​ອະ​ນຸ​ຍາດ​ໃຫ້​ທ່ານ​
    ຄົ້ນຫາແລະ ...
    ດາວໂຫລດ Clementine
  • 6
    XISMus
    XISMus
    ເອົາ​ໃຈ​ໃສ່​: ການ​ປັບ​ປຸງ​ສະ​ສົມ 2.4.3 ມີ​
    ປ່ອຍອອກມາ!! ການປັບປຸງເຮັດວຽກສໍາລັບການໃດໆ
    ຮຸ່ນ 2.xx ທີ່ຜ່ານມາ. ຖ້າການຍົກລະດັບ
    ຈາກເວີຊັນ v1.xx, ກະລຸນາດາວໂຫຼດ ແລະ
    ຂ້າພະເຈົ້າ ...
    ດາວໂຫລດ XISMuS
  • ເພີ່ມເຕີມ »

Linux ຄຳ ສັ່ງ

Ad