ນີ້ແມ່ນຄໍາສັ່ງ perlos390 ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
perlos390 - ການກໍ່ສ້າງແລະຕິດຕັ້ງ Perl ສໍາລັບ OS / 390 ແລະ z / OS
ສະຫຼຸບສັງລວມ
ເອກະສານນີ້ຈະຊ່ວຍໃຫ້ທ່ານຕັ້ງຄ່າ, ສ້າງ, ທົດສອບ ແລະຕິດຕັ້ງ Perl ໃນ OS/390 (aka z/OS)
ບໍລິການລະບົບ Unix.
ນີ້ ເອກະສານ ຄວາມຕ້ອງການ to be ອັບເດດ, ແຕ່ we ບໍ່ໄດ້ ຮູ້ ແມ່ນຫຍັງ it ຄວນ ເວົ້າວ່າ. ກະລຸນາ ອີເມວ
ຄໍາເຫັນ to [email protected] <mailto:[email protected]>.
ລາຍລະອຽດ
ນີ້ແມ່ນ Perl ທີ່ Ported ເຕັມສໍາລັບ OS/390 ຮຸ່ນ 2 ລຸ້ນ 3, 5, 6, 7, 8, ແລະ 9. ມັນອາດຈະ
ເຮັດວຽກຢູ່ໃນລຸ້ນອື່ນ ຫຼືລຸ້ນອື່ນ, ແຕ່ນັ້ນແມ່ນອັນທີ່ພວກເຮົາໄດ້ທົດສອບມັນ.
ທ່ານອາດຈະຈໍາເປັນຕ້ອງໄດ້ປະຕິບັດບາງວຽກງານການຕັ້ງຄ່າລະບົບກ່ອນທີ່ຈະດໍາເນີນການ Configure
script ສໍາລັບ Perl.
ເຄື່ອງມື
ບັນຊີລາຍຊື່ z/OS Unix Tools ແລະ Toys ອາດຈະພິສູດໄດ້ວ່າເປັນປະໂຫຍດ ແລະປະກອບດ້ວຍການເຊື່ອມຕໍ່ກັບພອດຂອງຫຼາຍ
ຊອບແວທີ່ເປັນປະໂຫຍດສໍາລັບການກໍ່ສ້າງ Perl.
http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1toy.html
ການຫຸ້ມຫໍ່ Perl ການແຜ່ກະຈາຍ on OS / 390
ຖ້າໃຊ້ ftp ຈື່ຈໍາທີ່ຈະໂອນການແຈກຢາຍໃນຮູບແບບຖານສອງ.
Gunzip/gzip ສໍາລັບ OS/390 ແມ່ນສົນທະນາຢູ່:
http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1ty1.html
ເພື່ອສະກັດ ASCII tar archive ເທິງ OS/390, ລອງເຮັດແບບນີ້:
pax -o to=IBM-1047,from=ISO8859-1 -r < latest.tar
or
zcat latest.tar.Z | pax -o to=IBM-1047,from=ISO8859-1 -r
ຖ້າທ່ານໄດ້ຮັບຄວາມຜິດພາດຫຼາຍຂອງແບບຟອມ
tar: FSUM7171 ... : ບໍ່ສາມາດຕັ້ງຄ່າ uid/gid: EDC5139I ການດໍາເນີນງານບໍ່ໄດ້ຮັບອະນຸຍາດ.
ທ່ານບໍ່ໄດ້ອ່ານຂ້າງເທິງແລະພະຍາຍາມໃຊ້ tar ແທນ pax, ກ່ອນອື່ນ ໝົດ ທ່ານຕ້ອງເອົາອອກ
ໄດເລກະທໍລີ perl (ປະຈຸບັນເສຍຫາຍ).
rm -rf perl-...
ແລະຫຼັງຈາກນັ້ນໃຊ້ pax.
ຕັ້ງຄ່າ ແລະ ງົບປະມານຂອງ ສໍາລັບການ Perl on OS / 390
ໃຫ້ແນ່ໃຈວ່າການຕິດຕັ້ງ yacc ຂອງທ່ານຢູ່ໃນສະຖານທີ່ລວມທັງແມ່ແບບການວິເຄາະທີ່ຈໍາເປັນ
ໄຟລ໌. ຖ້າຫາກວ່າທ່ານຍັງບໍ່ໄດ້ເຮັດແນວນັ້ນ, ໃຫ້ແນ່ໃຈວ່າ:
cp /samples/yyparse.c / ແລະອື່ນໆ
ນີ້ອາດຈະເປັນເວລາທີ່ດີເພື່ອຮັບປະກັນວ່າໄຟລ໌ /etc/protocol ຂອງທ່ານແລະບໍ່ວ່າຈະເປັນຂອງທ່ານ
/etc/resolvconf or / etc / hosts ໄຟລ໌ຢູ່ໃນສະຖານທີ່. ເອກະສານ IBM ທີ່ອະທິບາຍເຊັ່ນນັ້ນ
ບັນຫາການຕິດຕັ້ງລະບົບ USS ແມ່ນ SC28-1890-07 "OS/390 UNIX System Services Planning", ໃນ
ໂດຍສະເພາະບົດທີ 6 ກ່ຽວກັບການປັບແຕ່ງແກະ OE.
GNU ເຮັດສໍາລັບ OS / 390, ເຊິ່ງແນະນໍາໃຫ້ສ້າງ perl (ເຊັ່ນດຽວກັນກັບການກໍ່ສ້າງ CPAN
ໂມດູນແລະສ່ວນຂະຫຍາຍ), ສາມາດໃຊ້ໄດ້ຈາກ "ເຄື່ອງມື".
ບາງຄົນໄດ້ລາຍງານວ່າພົບ "Out of memory!" ຄວາມຜິດພາດໃນຂະນະທີ່ພະຍາຍາມສ້າງ Perl
ໃຊ້ GNU ສ້າງ binary. ຖ້າຫາກທ່ານພົບບັນຫາດັ່ງກ່າວ, ພະຍາຍາມດາວນ໌ໂຫລດແຫຼ່ງ
ຊຸດລະຫັດແລະສ້າງ GNU ຜະລິດຈາກແຫຼ່ງເພື່ອລົບລ້າງບັນຫາດັ່ງກ່າວ. ເຈົ້າອາດຈະຄືກັນ
ຊອກຫາ GNU ເຮັດ (ເຊັ່ນດຽວກັນກັບ Perl ແລະ Apache) ໃນສີແດງ / ປື້ມ "Open Source Software for
OS/390 UNIX", SG24-5944-00 ຈາກ IBM.
ຖ້າແທນທີ່ຈະ GNU ແນະນໍາເຮັດໃຫ້ເຈົ້າຢາກໃຊ້ລະບົບທີ່ສະຫນອງໃຫ້
ຫຼັງຈາກນັ້ນ, ໃຫ້ແນ່ໃຈວ່າການຕິດຕັ້ງໄຟລ໌ກົດລະບຽບເລີ່ມຕົ້ນຢ່າງຖືກຕ້ອງໂດຍຜ່ານຄໍາສັ່ງ shell:
cp /samples/startup.mk / ແລະອື່ນໆ
ແລະໃຫ້ແນ່ໃຈວ່າໄດ້ກໍານົດຕົວແປສະພາບແວດລ້ອມ _C89_CCMODE=1 (ການສົ່ງອອກ _C89_CCMODE=1 ແມ່ນ
ຍັງເປັນຄວາມຄິດທີ່ດີສໍາລັບຜູ້ໃຊ້ຂອງ GNU ເຮັດ).
ທ່ານອາດຈະຕ້ອງການມີ GNU groff ສໍາລັບ OS / 390 ຕິດຕັ້ງກ່ອນທີ່ຈະດໍາເນີນການ "ເຮັດ
ຕິດຕັ້ງ" ຂັ້ນຕອນສໍາລັບ Perl.
ມີຂໍ້ຜິດພາດທາງໄວຍະກອນຢູ່ໃນໄຟລ໌ສ່ວນຫົວ /usr/include/sys/socket.h ທີ່ IBM ສະໜອງໃຫ້.
ກັບ USS V2R7, V2R8, ແລະອາດຈະເປັນ V2R9. ບັນຫາກັບໄຟລ໌ header ແມ່ນວ່າຢູ່ໃກ້ກັບ
ຄໍານິຍາມຂອງ SO_REUSEPORT ຄົງມີຕົວອັກສອນ '/' ພິເສດນອກ
ຄໍາເຫັນດັ່ງນັ້ນ:
#define SO_REUSEPORT 0x0200 /* ອະນຸຍາດທີ່ຢູ່ ແລະພອດທ້ອງຖິ່ນ
ໃຊ້ຄືນ */ /
ທ່ານສາມາດແກ້ໄຂສ່ວນຫົວຕົວທ່ານເອງທີ່ຈະເອົາ '/' ສຸດທ້າຍ, ຫຼືທ່ານອາດຈະສັງເກດວ່າ
ສະພາບແວດລ້ອມພາສາ (LE) APAR PQ39997 ອະທິບາຍບັນຫາ ແລະ UQ46272 ແລະ UQ46271 ຂອງ PTF
ແມ່ນການແກ້ໄຂ (R8 ຢ່າງຫນ້ອຍ) ແລະນໍາໃຊ້ພວກມັນ. ຖ້າປະໄວ້ໂດຍບໍ່ໄດ້ເອົາໃຈໃສ່, syntax ຈະຜິດພາດ
ກາຍເປັນຄວາມບໍ່ສາມາດສໍາລັບ Perl ເພື່ອສ້າງສ່ວນຂະຫຍາຍ "Socket" ຂອງມັນ.
ສໍາລັບການທົດສອບສົບຜົນສໍາເລັດ, ທ່ານອາດຈະຈໍາເປັນຕ້ອງໄດ້ເປີດ bit ຫນຽວສໍາລັບໂລກຂອງທ່ານສາມາດອ່ານໄດ້ / tmp
ໄດເລກະທໍລີຖ້າທ່ານບໍ່ໄດ້ເຮັດແລ້ວ (ເບິ່ງ man chmod).
ກໍາຫນົດຄ່າ Perl on OS / 390
ເມື່ອທ່ານໄດ້ຍົກເລີກການແຜ່ກະຈາຍ, ແລ່ນ "sh Configure" (ເບິ່ງ INSTALL ສໍາລັບການເຕັມ
ການສົນທະນາກ່ຽວກັບການຕັ້ງຄ່າທາງເລືອກ). ມີໄຟລ໌ "ຄໍາແນະນໍາ" ສໍາລັບ os390 ທີ່ລະບຸ
ຄຸນຄ່າທີ່ຖືກຕ້ອງສໍາລັບສິ່ງສ່ວນໃຫຍ່. ບາງສິ່ງທີ່ຄວນລະວັງລວມມີ:
· ຂໍ້ຄວາມຂອງແບບຟອມ:
(ຂ້ອຍເຫັນວ່າເຈົ້າກໍາລັງໃຊ້ Korn shell. ບາງ ksh ລະເບີດຂຶ້ນໃນ Configure,
ສ່ວນໃຫຍ່ແມ່ນຢູ່ໃນລະບົບ exotic ເກົ່າ. ຖ້າເຈົ້າເຮັດໄດ້, ລອງໃຊ້ເປືອກ Bourne ແທນ.)
ບໍ່ມີຫຍັງຕ້ອງເປັນຫ່ວງ.
·ບາງໄຟລ໌ແມ່ແບບເລີ່ມຕົ້ນຂອງຕົວແຍກວິເຄາະໃນ /samples ແມ່ນຈໍາເປັນໃນ /etc. ໃນ
ໂດຍສະເພາະໃຫ້ແນ່ໃຈວ່າທ່ານຢ່າງຫນ້ອຍຄັດລອກ /samples/yyparse.c ໄປໃສ່ / ແລະອື່ນໆ ກ່ອນທີ່ຈະແລ່ນ
ການຕັ້ງຄ່າ Perl. ຂັ້ນຕອນນີ້ຮັບປະກັນການສະກັດເອົາສະບັບ EBCDIC ສົບຜົນສໍາເລັດຂອງ
parser ໄຟລ໌ເຊັ່ນ perly.c ແລະ perly.h. ນີ້ຕ້ອງເຮັດກ່ອນທີ່ຈະແລ່ນ
ຕັ້ງຄ່າຄັ້ງທໍາອິດ. ຖ້າຫາກວ່າທ່ານບໍ່ສາມາດເຮັດແນວນັ້ນວິທີທີ່ງ່າຍທີ່ສຸດໃນການປັບຄ່າຄືນໃຫມ່
Perl ແມ່ນເພື່ອລຶບການສ້າງຮາກທີ່ກໍາຫນົດເອງທີ່ບໍ່ຖືກຕ້ອງຂອງທ່ານແລະເອົາແຫຼ່ງທີ່ມາຈາກ tar
ບານ. ຫຼັງຈາກນັ້ນ, ທ່ານຕ້ອງຮັບປະກັນວ່າ /etc/yyparse.c ຢູ່ໃນສະຖານທີ່ຢ່າງຖືກຕ້ອງກ່ອນທີ່ຈະພະຍາຍາມ
ເພື່ອດໍາເນີນການ Configure ຄືນໃໝ່.
·ພອດນີ້ຈະສະຫນັບສະຫນູນການໂຫຼດແບບເຄື່ອນໄຫວ, ແຕ່ມັນບໍ່ໄດ້ຖືກເລືອກໂດຍຄ່າເລີ່ມຕົ້ນ. ຖ້າເຈົ້າ
ຕ້ອງການທີ່ຈະທົດລອງກັບການໂຫຼດແບບເຄື່ອນໄຫວຫຼັງຈາກນັ້ນໃຫ້ແນ່ໃຈວ່າຈະລະບຸ -Dusedl ໃນ
arguments ກັບ Configure script. ເບິ່ງຄໍາເຫັນໃນ hints/os390.sh ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ
ຂໍ້ມູນກ່ຽວກັບການໂຫຼດແບບເຄື່ອນໄຫວ. ຖ້າທ່ານກໍ່ສ້າງດ້ວຍການໂຫຼດແບບເຄື່ອນໄຫວຫຼັງຈາກນັ້ນທ່ານຈະຕ້ອງການ
ເພື່ອເພີ່ມບັນຊີລາຍການ $archlibexp/CORE ໃສ່ຕົວແປສະພາບແວດລ້ອມ LIBPATH ຂອງເຈົ້າຕາມລໍາດັບ
ສໍາລັບ perl ເຮັດວຽກ. ເບິ່ງໄຟລ໌ config.sh ສໍາລັບມູນຄ່າຂອງ $archlibexp. ຖ້າຢູ່ໃນຄວາມພະຍາຍາມ
ການນໍາໃຊ້ Perl ທ່ານເຫັນຂໍ້ຄວາມຜິດພາດຄ້າຍຄືກັນກັບ:
CEE3501S ບໍ່ພົບໂມດູນ libperl.dll.
ຈາກຈຸດເຂົ້າ __dllstaticinit ທີ່ compile unit offset +00000194 ຢູ່
ຫຼັງຈາກນັ້ນ, LIBPATH ຂອງທ່ານບໍ່ມີສະຖານທີ່ຂອງ libperl.x ແລະ libperl.dll ຫຼື.
libperl.so ໃນມັນ. ເພີ່ມໄດເລກະທໍລີນັ້ນໃສ່ LIBPATH ຂອງທ່ານແລະດໍາເນີນການຕໍ່ໄປ.
· ຢ່າເປີດທຸງການເພີ່ມປະສິດທິພາບການລວບລວມຂໍ້ມູນ "-O". ມີ bug ໃນບໍ່ວ່າຈະເປັນ
optimizer ຫຼື perl ທີ່ເຮັດໃຫ້ perl ເຮັດວຽກບໍ່ຖືກຕ້ອງໃນເວລາທີ່ optimizer ເປີດ.
·ບາງໄຟລ໌ການຕັ້ງຄ່າໃນ / ແລະອື່ນໆ ໃຊ້ໂດຍ APIs ເຄືອຂ່າຍແມ່ນຂາດຫາຍໄປ
ຫຼືມີຊື່ຜິດ. ໂດຍສະເພາະ, ໃຫ້ແນ່ໃຈວ່າມີທັງ
/etc/resolvconf or an / etc / hosts, ດັ່ງນັ້ນ gethostbyname() ເຮັດວຽກ, ແລະໃຫ້ແນ່ໃຈວ່າ
ໄຟລ໌ /etc/proto ໄດ້ຖືກປ່ຽນຊື່ເປັນ /etc/protocol (ບໍ່ແມ່ນ / etc / ໂປໂຕຄອນ, ດັ່ງທີ່ຖືກນໍາໃຊ້ໂດຍ
ລະບົບ Unix ອື່ນໆ). ທ່ານອາດຈະຕ້ອງຊອກຫາສິ່ງຕ່າງໆເຊັ່ນ: HOSTNAME ແລະ DOMAINORIGIN
ໃນ "//'SYS1.TCPPARMS(TCPDATA)'" ສະມາຊິກ PDS ເພື່ອຕັ້ງຄ່າຂອງທ່ານຢ່າງຖືກຕ້ອງ. / ແລະອື່ນໆ
ໄຟລ໌ເຄືອຂ່າຍ.
ສ້າງ, ທົດສອບ, ຕິດຕັ້ງ Perl on OS / 390
ເວົ້າງ່າຍໆ:
sh ຕັ້ງຄ່າ
ເຮັດໃຫ້
ເຮັດໃຫ້ການທົດສອບ
ຖ້າຫາກວ່າທຸກສິ່ງທຸກຢ່າງດີ (ເບິ່ງພາກຕໍ່ໄປສໍາລັບການທົດສອບ / ການວິນິດໄສ IVP) ຫຼັງຈາກນັ້ນ:
ເຮັດໃຫ້ຕິດຕັ້ງ
ຂັ້ນຕອນສຸດທ້າຍນີ້ອາດຈະຫຼືບໍ່ອາດຈະຮຽກຮ້ອງໃຫ້ມີສິດທິ UID=0 ອີງຕາມວິທີທີ່ທ່ານຕອບຄໍາຖາມ
ຄໍາຖາມທີ່ຕັ້ງຄ່າທີ່ຖາມແລະບໍ່ວ່າຈະເປັນຫຼືບໍ່ວ່າທ່ານມີການເຂົ້າເຖິງລາຍລັກອັກສອນ
ທ່ານລະບຸໄວ້.
ສ້າງ ຜິດລັກ ກັບ Perl on OS / 390
"ອອກຈາກຄວາມຊົງຈໍາ!" ຂໍ້ຄວາມໃນລະຫວ່າງການສ້າງ Perl ມັກຈະຖືກແກ້ໄຂໂດຍການສ້າງໃຫມ່
GNU ສ້າງປະໂຫຍດສໍາລັບ OS/390 ຈາກຊຸດລະຫັດແຫຼ່ງ.
ລາຍການຈໍາກັດຫນ່ວຍຄວາມຈໍາອີກອັນຫນຶ່ງທີ່ຈະກວດສອບແມ່ນ MAXASSIZE ພາລາມິເຕີຂອງທ່ານໃນຂອງທ່ານ
ຊຸດຂໍ້ມູນ 'SYS1.PARMLIB(BPXPRMxx)' (ຈື່ໄວ້ຄືກັນວ່າພື້ນທີ່ທີ່ຢູ່ V2R8 ຈຳກັດສາມາດເປັນໄດ້.
ກໍານົດບົນພື້ນຖານ ID ຜູ້ໃຊ້ຢູ່ໃນສ່ວນ USS ຂອງໂປຣໄຟລ໌ RACF). ປະຊາຊົນໄດ້ລາຍງານ
ການສ້າງ Perl ທີ່ປະສົບຜົນສໍາເລັດດ້ວຍພາລາມິເຕີ MAXASSIZE ຂະຫນາດນ້ອຍເທົ່າກັບ 503316480 (ແລະມັນອາດຈະເປັນ
ເປັນໄປໄດ້ທີ່ຈະສ້າງ Perl ດ້ວຍ MAXASSIZE ຂະຫນາດນ້ອຍກວ່ານັ້ນ).
ພາຍໃນ USS ຂອງທ່ານ / etc / profile ຫຼື $HOME/.profile ອາດຈະຈຳກັດການຕັ້ງຄ່າສູງສຸດຂອງທ່ານ. ກວດເບິ່ງວ່າ
ຄໍາສັ່ງຕໍ່ໄປນີ້ສົ່ງຄ່າທີ່ສົມເຫດສົມຜົນ:
ulimit -a
ເພື່ອເກັບຮັກສາຄວາມຊົງຈໍາ, ທ່ານຄວນມີໂມດູນ compiler ຂອງທ່ານໂຫລດເຂົ້າໄປໃນ Link Pack Area
(LPA/ELPA) ແທນທີ່ຈະຢູ່ໃນລາຍການລິ້ງ ຫຼືຂັ້ນຕອນ lib.
ຖ້າ c89 compiler ຈົ່ມກ່ຽວກັບຄວາມຜິດພາດ syntax ໃນລະຫວ່າງການສ້າງ Socket extension
ຫຼັງຈາກນັ້ນໃຫ້ແນ່ໃຈວ່າການແກ້ໄຂຄວາມຜິດພາດ syntax ໃນຫົວຂໍ້ລະບົບ /usr/include/sys/socket.h.
ການທົດສອບ ຜິດລັກ ກັບ Perl on OS / 390
ຂັ້ນຕອນ "ເຮັດການທົດສອບ" ດໍາເນີນຂັ້ນຕອນການກວດສອບ Perl, ໂດຍປົກກະຕິກ່ອນທີ່ຈະຕິດຕັ້ງ. ເຈົ້າ
ອາດຈະພົບກັບຂໍ້ຄວາມ STDERR ເຖິງແມ່ນວ່າໃນລະຫວ່າງການແລ່ນ "ເຮັດການທົດສອບ". ນີ້ແມ່ນ ກ
ແນະນໍາບາງຄວາມຜິດປົກກະຕິທີ່ເຫັນທົ່ວໄປກວ່າ:
· ຂໍ້ຄວາມຂອງແບບຟອມ:
io/openpid...........CEE5210S ໄດ້ຮັບສັນຍານ SIGHUP.
CEE5210S ສັນຍານ SIGHUP ໄດ້ຮັບ.
CEE5210S ສັນຍານ SIGHUP ໄດ້ຮັບ.
ok
ຊີ້ໃຫ້ເຫັນວ່າການທົດສອບ t/io/openpid.t ຂອງ Perl ໄດ້ຜ່ານໄປ, ແຕ່ເຮັດດ້ວຍ extraneous.
ຂໍ້ຄວາມໃນ stderr ຈາກ CEE.
· ຂໍ້ຄວາມຂອງແບບຟອມ:
lib/ftmp-security....File::Temp::_gettemp: ໄດເລກະທໍລີຫຼັກ (/ tmp /) ບໍ່ປອດໄພ
(ໜຽວໜຽວບໍ່ໄດ້ຕັ້ງເວລາທີ່ໂລກຂຽນໄດ້ບໍ?) ທີ່ lib/ftmp-security.t line 100
ໄຟລ໌::Temp::_gettemp: ໄດເລກະທໍລີຫຼັກ (/ tmp /) ບໍ່ປອດໄພ (ບໍ່ຫນຽວ
ກໍານົດເວລາທີ່ໂລກຂຽນໄດ້?) ຢູ່ທີ່ lib/ftmp-security.t ແຖວ 100
ok
ຊີ້ບອກບັນຫາກັບການອະນຸຍາດຢູ່ໃນຂອງທ່ານ / tmp ໄດເລກະທໍລີພາຍໃນ HFS. ເຖິງ
ແກ້ໄຂບັນຫາທີ່ອອກຄໍາສັ່ງ:
chmod a+t / tmp
ຈາກບັນຊີທີ່ມີການເຂົ້າເຖິງການຂຽນເຂົ້າໃນໄດເລກະທໍລີສໍາລັບ /tmp.
· ໝົດຄວາມຊົງຈຳ!
ຊຸດທົດສອບ perl ທີ່ຜ່ານມາແມ່ນຂ້ອນຂ້າງຫິວ. ນອກເຫນືອໄປຈາກຄໍາເຫັນຂ້າງເທິງກ່ຽວກັບ
ຂໍ້ຈໍາກັດຂອງຫນ່ວຍຄວາມຈໍາມັນຍັງຄຸ້ມຄ່າສໍາລັບການກວດສອບ _CEE_RUNOPTS ໃນສະພາບແວດລ້ອມຂອງທ່ານ.
ໃນປັດຈຸບັນ Perl ມີ (ໃນ miniperlmain.c) C #pragma ເພື່ອກໍານົດທາງເລືອກການດໍາເນີນການ CEE, ແຕ່ວ່າ
ຕົວແປສະພາບແວດລ້ອມຊະນະ.
ລະຫັດ C ຮ້ອງຂໍໃຫ້:
#pragma runopts(HEAP(2M,500K, Anywhere, Keep,8K,4K) STACK(,,ANY,) ALL31(ON))
ພາກສ່ວນທີ່ສໍາຄັນຂອງນັ້ນແມ່ນການໂຕ້ຖຽງທີສອງ (ການເພີ່ມຂຶ້ນ) ກັບ HEAP, ແລະ
ໃຫ້ stack ເປັນ "Above the (16M) line". ຖ້າການເພີ່ມ heap ນ້ອຍເກີນໄປ
ຫຼັງຈາກນັ້ນເມື່ອ perl (ຕົວຢ່າງການໂຫຼດ unicode/Name.pl) ພະຍາຍາມສ້າງ "ໃຫຍ່" (400K+)
string ມັນບໍ່ສາມາດເຫມາະໃນພາກສ່ວນດຽວແລະທ່ານໄດ້ຮັບ "Out of Memory!" - ເຖິງແມ່ນວ່າມີ
ຍັງມີຄວາມຊົງຈໍາຫຼາຍຢູ່.
ບັນຫາທີ່ກ່ຽວຂ້ອງແມ່ນໃຊ້ກັບ perl's malloc. Malloc ຂອງ Perl ໃຊ້ "sbrk()" ເພື່ອໃຫ້ໄດ້ຮັບຄວາມຊົງຈໍາ,
ແລະ "sbrk()" ຖືກຈໍາກັດພຽງແຕ່ການຈັດສັນທໍາອິດ, ດັ່ງນັ້ນໃນກໍລະນີນີ້ບາງສິ່ງບາງຢ່າງເຊັ່ນ:
HEAP(8M,500K,ຢູ່ໃສ,ເກັບໄວ້,8K,4K)
ຈໍາເປັນຕ້ອງໄດ້ຜ່ານຊຸດທົດສອບ.
ການຕິດຕັ້ງ ຜິດລັກ ກັບ Perl on OS / 390
ສະຄຣິບຕິດຕັ້ງຈະພະຍາຍາມແລ່ນໃນ OS/390. ມັນຈະມີຄວາມຜິດພາດຫນ້ອຍລົງຖ້າທ່ານມີ a
roff utility ຕິດຕັ້ງ. ທ່ານສາມາດໄດ້ຮັບ GNU groff ຈາກ Redbook SG24-5944-00 ftp site.
ການນໍາໃຊ້ ຄໍາແນະນໍາ ສໍາລັບການ Perl on OS / 390
ເມື່ອໃຊ້ perl ໃນ OS/390 ກະລຸນາຈື່ໄວ້ວ່າຊຸດຕົວອັກສອນ EBCDIC ແລະ ASCII ແມ່ນ.
ແຕກຕ່າງກັນ. ເບິ່ງ perlebcdic.pod ສໍາລັບເພີ່ມເຕີມກ່ຽວກັບບັນຫາຊຸດຕົວອັກສອນດັ່ງກ່າວ. Perl builtin
ຟັງຊັນທີ່ອາດຈະປະຕິບັດແຕກຕ່າງກັນພາຍໃຕ້ EBCDIC ຍັງຖືກກ່າວເຖິງຢູ່ໃນ perlport.pod
document
Open Edition (UNIX System Services) ຈາກ V2R8 ເປັນຕົ້ນໄປແມ່ນຮອງຮັບ #!/path/to/perl script
ຄຳຮຽກຮ້ອງ. ມີ PTF ທີ່ມີຢູ່ຈາກ IBM ສໍາລັບ V2R7 ທີ່ຈະອະນຸຍາດໃຫ້ shell/kernel
ຮອງຮັບ #!. ການປ່ອຍ USS ກ່ອນ V2R7 ບໍ່ໄດ້ສະຫນັບສະຫນູນ #! ຄວາມຫມາຍຂອງ script
ຄຳຮຽກຮ້ອງ. ຖ້າຫາກວ່າທ່ານກໍາລັງແລ່ນ V2R6 ຫຼືກ່ອນຫນ້ານັ້ນ, ເບິ່ງ:
ຫົວຫນ້າ 'ບ່ອນໃດ perldoc'
ສໍາລັບຕົວຢ່າງຂອງວິທີການນໍາໃຊ້ "eval exec" trick ເພື່ອຮ້ອງຂໍໃຫ້ shell ໄດ້ Perl ດໍາເນີນການຂອງທ່ານ
ສະຄຣິບຢູ່ໃນລຸ້ນເກົ່າຂອງ Unix System Services.
ຖ້າທ່ານກໍາລັງມີບັນຫາກັບວົງເລັບສີ່ຫຼ່ຽມ, ພິຈາລະນາປ່ຽນ rlogin ຂອງທ່ານຫຼື
ລູກຄ້າ telnet. ພະຍາຍາມຫຼີກເວັ້ນການ emulators 3270 ເກົ່າແລະ ISHELL ສໍາລັບການເຮັດວຽກກັບ Perl ໃນ USS.
floating ຈຸດ ຜິດລັກ ກັບ Perl on OS / 390
ປະກົດວ່າມີຂໍ້ບົກພ່ອງໃນການປະຕິບັດຈຸດລອຍຢູ່ໃນລະບົບ S/390 ດັ່ງກ່າວ
ໂທຫາ int() ກ່ຽວກັບຜະລິດຕະພັນຂອງຕົວເລກແລະຈໍານວນຂະຫນາດເລັກແມ່ນບໍ່ຄືກັນກັບ
ໂທຫາ int() ຢູ່ໃນປະລິມານຂອງຕົວເລກນັ້ນ ແລະຕົວເລກຂະໜາດໃຫຍ່. ຍົກຕົວຢ່າງ,
ໃນລະຫັດ Perl ຕໍ່ໄປນີ້:
$x ຂອງຂ້ອຍ = 100000.0;
$y ຂອງຂ້ອຍ = int($x * 1e-5) * 1e5; # '0'
$z ຂອງຂ້ອຍ = int($x / 1e+5) * 1e5; # '100000'
ພິມ "\$y ແມ່ນ $y ແລະ \$z ແມ່ນ $z\n"; # $y ແມ່ນ 0 ແລະ $z ແມ່ນ 100000
ເຖິງແມ່ນວ່າຄົນເຮົາຄາດຫວັງວ່າປະລິມານ $y ແລະ $z ຈະຄືກັນ ແລະເທົ່າກັບ 100000 ເຂົາເຈົ້າ.
ຈະແຕກຕ່າງກັນແລະແທນທີ່ຈະເປັນ 0 ແລະ 100000 ຕາມລໍາດັບ.
ບັນຫາສາມາດຖືກກວດສອບຕື່ມອີກໃນໂຄງການ C ທີ່ທຽບເທົ່າປະມານ:
#ລວມ
#ລວມ
ຕົ້ນຕໍ ()
{
double r1,r2;
double x = 100000.0;
double y = 0.0;
double z = 0.0;
x = 100000.0 * 1e-5 ;
r1 = modf (x,&y);
x = 100000.0 / 1e+5;
r2 = modf (x,&z);
printf("y ແມ່ນ %e ແລະ z ແມ່ນ %e\n",y*1e5,z*1e5);
/* y ແມ່ນ 0.000000e+00 ແລະ z ແມ່ນ 1.000000e+05 (ກັບ c89) */
}
ໂມດູນ ແລະ ການຂະຫຍາຍ ສໍາລັບການ Perl on OS / 390
ໂມດູນທີ່ບໍລິສຸດບໍລິສຸດ (ທີ່ບໍ່ແມ່ນ xs) ອາດຈະຖືກຕິດຕັ້ງໂດຍຜ່ານປົກກະຕິ:
perl Makefile.PL
ເຮັດໃຫ້
ເຮັດໃຫ້ການທົດສອບ
ເຮັດໃຫ້ຕິດຕັ້ງ
ຖ້າທ່ານສ້າງ perl ທີ່ມີຄວາມສາມາດໃນການໂຫຼດແບບເຄື່ອນໄຫວ, ນັ້ນກໍ່ຈະເປັນວິທີການສ້າງ
xs ການຂະຫຍາຍໂດຍອີງໃສ່. ຢ່າງໃດກໍຕາມ, ຖ້າທ່ານສ້າງ perl ດ້ວຍການເຊື່ອມໂຍງແບບຄົງທີ່ເລີ່ມຕົ້ນທີ່ທ່ານສາມາດເຮັດໄດ້
ຍັງສ້າງສ່ວນຂະຫຍາຍໂດຍອີງໃສ່ xs ສໍາລັບ OS/390 ແຕ່ທ່ານຈະຕ້ອງປະຕິບັດຕາມຄໍາແນະນໍາໃນ
ExtUtils::MakeMaker ສໍາລັບການກໍ່ສ້າງ binaries perl ເຊື່ອມຕໍ່ແບບຄົງທີ່. ໃນທີ່ງ່າຍທີ່ສຸດ
ການຕັ້ງຄ່າການກໍ່ສ້າງ static perl + xs extension ຕົ້ມລົງເປັນ:
perl Makefile.PL
ເຮັດໃຫ້
ເຮັດ perl
ເຮັດໃຫ້ການທົດສອບ
ເຮັດໃຫ້ຕິດຕັ້ງ
make -f Makefile.aperl inst_perl MAP_TARGET=perl
ໃນກໍລະນີຫຼາຍທີ່ສຸດ, ປະຊາຊົນໄດ້ລາຍງານຜົນໄດ້ຮັບທີ່ດີກວ່າກັບ GNU ແທນທີ່ຈະເປັນລະບົບ
/bin/make program, ບໍ່ວ່າຈະເປັນສໍາລັບໂມດູນທໍາມະດາຫຼືສໍາລັບການຂະຫຍາຍທີ່ອີງໃສ່ xs.
ຖ້າຂະບວນການສ້າງພົບບັນຫາກັບການລວບລວມຫຼືການເຊື່ອມໂຍງຫຼັງຈາກນັ້ນລອງຕັ້ງຄ່າ
_C89_CCMODE ຫາ 1. ສົມມຸດວ່າ sh ເປັນ login shell ຂອງທ່ານແລ້ວແລ່ນ:
ສົ່ງອອກ _C89_CCMODE=1
ຖ້າ tcsh ແມ່ນ shell ເຂົ້າສູ່ລະບົບຂອງທ່ານ, ໃຫ້ໃຊ້ຄໍາສັ່ງ setenv.
AUTHORS
David Fiander ແລະ Peter Prymmer ຂອບໃຈກັບ Dennis Longnecker ແລະ William Raffloer ສໍາລັບ
ບົດລາຍງານທີ່ມີຄຸນຄ່າ, LPAR ແລະຄໍາຄຶດຄໍາເຫັນ PTF. ຂໍຂອບໃຈກັບ Mike MacIsaac ແລະ Egon Terwedow ສໍາລັບ
SG24-5944-00. ຂໍຂອບໃຈກັບ Ignasi Roca ສໍາລັບການຊີ້ບອກບັນຫາຈຸດລອຍ. ຂອບໃຈ
ກັບ John Goodyear ສໍາລັບການຊ່ວຍເຫຼືອການໂຫຼດແບບເຄື່ອນໄຫວ.
ໃຊ້ perlos390 ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net