ນີ້ແມ່ນຄໍາສັ່ງ 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