Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന കമാൻഡ് പെർൽപോർട്ടാണിത്.
പട്ടിക:
NAME
perlport - പോർട്ടബിൾ പേൾ എഴുതുന്നു
വിവരണം
നിരവധി ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിൽ പേൾ പ്രവർത്തിക്കുന്നു. അവരിൽ ഭൂരിഭാഗവും പൊതുവായി പങ്കിടുന്നുണ്ടെങ്കിലും, അവർ
അവരുടേതായ തനതായ സവിശേഷതകളും ഉണ്ട്.
പോർട്ടബിൾ പേൾ കോഡ് എന്താണെന്ന് കണ്ടെത്താൻ നിങ്ങളെ സഹായിക്കുന്നതിനാണ് ഈ ഡോക്യുമെന്റ്. അത്
പോർട്ടബിൾ ആയി എഴുതാനുള്ള തീരുമാനമെടുത്താൽ, വരകൾ എവിടെയാണ് വരച്ചിരിക്കുന്നതെന്ന് നിങ്ങൾക്കറിയാം
നിങ്ങൾക്ക് അവരുടെ ഉള്ളിൽ നിൽക്കാം.
ഒരു പ്രത്യേക തരം കമ്പ്യൂട്ടറിന്റെ പൂർണ്ണ പ്രയോജനം നേടുന്നതും തമ്മിൽ ഒരു കൈമാറ്റമുണ്ട്
അവയുടെ മുഴുവൻ ശ്രേണിയും പ്രയോജനപ്പെടുത്തുന്നു. സ്വാഭാവികമായും, നിങ്ങളുടെ ശ്രേണി വിശാലമാക്കുകയും ആകുകയും ചെയ്യുമ്പോൾ
കൂടുതൽ വൈവിധ്യമാർന്ന, പൊതുവായ ഘടകങ്ങൾ കുറയുന്നു, നിങ്ങൾക്ക് കൂടുതൽ ചെറിയ പ്രദേശം അവശേഷിക്കുന്നു
ഒരു പ്രത്യേക ചുമതല നിർവഹിക്കുന്നതിന് നിങ്ങൾക്ക് പ്രവർത്തിക്കാൻ കഴിയുന്ന പൊതുവായ അടിസ്ഥാനം. അങ്ങനെ, നിങ്ങൾ എപ്പോൾ
ഒരു പ്രശ്നത്തെ ആക്രമിക്കാൻ തുടങ്ങുക, ഇടപാടിന്റെ ഏത് ഭാഗത്തിന് കീഴിലാണെന്ന് പരിഗണിക്കേണ്ടത് പ്രധാനമാണ്
നിങ്ങൾ പ്രവർത്തിപ്പിക്കാൻ ആഗ്രഹിക്കുന്ന കർവ്. പ്രത്യേകിച്ചും, അത് പ്രധാനമാണോ എന്ന് നിങ്ങൾ തീരുമാനിക്കണം
നിങ്ങൾ കോഡിംഗ് ചെയ്യുന്ന ടാസ്ക്കിന് പോർട്ടബിൾ എന്നതിന്റെ പൂർണ്ണമായ സാമാന്യതയുണ്ട്, അല്ലെങ്കിൽ അത് നേടണോ
ഇപ്പോൾ ചെയ്ത ജോലി. ഇത് ഏറ്റവും ബുദ്ധിമുട്ടുള്ള തിരഞ്ഞെടുപ്പാണ്. ബാക്കിയുള്ളത് എളുപ്പമാണ്, കാരണം
നിങ്ങളുടെ പ്രശ്നത്തെ ഏത് രീതിയിൽ സമീപിക്കാൻ ആഗ്രഹിക്കുന്നുവോ അനേകം ചോയ്സുകൾ Perl നൽകുന്നു.
മറ്റൊരു തരത്തിൽ നോക്കുമ്പോൾ, പോർട്ടബിൾ കോഡ് എഴുതുന്നത് സാധാരണയായി നിങ്ങളുടെ മനഃപൂർവ്വം പരിമിതപ്പെടുത്തുന്നതാണ്
ലഭ്യമായ തിരഞ്ഞെടുപ്പുകൾ. സ്വാഭാവികമായും, അത് ചെയ്യാൻ അച്ചടക്കവും ത്യാഗവും ആവശ്യമാണ്. ഉത്പന്നം
പോർട്ടബിലിറ്റിയും സൗകര്യവും ഒരു സ്ഥിരമായിരിക്കാം. നിനക്ക് മുന്നറിയിപ്പ് നൽകിയിട്ടുണ്ട്.
രണ്ട് പ്രധാന പോയിന്റുകൾ അറിഞ്ഞിരിക്കുക:
എല്ലാ Perl പ്രോഗ്രാമുകളും പോർട്ടബിൾ ആയിരിക്കണമെന്നില്ല
Unix ടൂളുകൾ ഒരുമിച്ച് ഒട്ടിക്കാൻ ഒരു ഭാഷയായി നിങ്ങൾ Perl ഉപയോഗിക്കാതിരിക്കാൻ ഒരു കാരണവുമില്ല,
അല്ലെങ്കിൽ ഒരു Macintosh ആപ്ലിക്കേഷൻ പ്രോട്ടോടൈപ്പ് ചെയ്യാനോ വിൻഡോസ് രജിസ്ട്രി നിയന്ത്രിക്കാനോ. എങ്കിൽ
തന്നിരിക്കുന്ന പ്രോഗ്രാമിൽ ഒരു കാരണത്താലോ മറ്റൊരു കാരണത്താലോ പോർട്ടബിലിറ്റി ലക്ഷ്യമിടുന്നതിൽ അർത്ഥമില്ല,
പിന്നെ വിഷമിക്കേണ്ട.
ഏതാണ്ട് എല്ലാ പേർലും ഇതിനകം തന്നെ is വഹനീയമായ
പോർട്ടബിൾ പേൾ കോഡ് സൃഷ്ടിക്കുന്നത് ബുദ്ധിമുട്ടാണെന്ന് കരുതി വഞ്ചിതരാകരുത്. അത് അല്ല.
വ്യത്യസ്തങ്ങളിൽ ലഭ്യമായവയ്ക്കിടയിലുള്ള വിടവുകൾ നികത്താൻ പേൾ അതിന്റെ ലെവൽ-ബെസ്റ്റ് ശ്രമിക്കുന്നു
പ്ലാറ്റ്ഫോമുകളും ആ ഫീച്ചറുകൾ ഉപയോഗിക്കുന്നതിന് ലഭ്യമായ എല്ലാ മാർഗങ്ങളും. അങ്ങനെ മിക്കവാറും എല്ലാ പേർലും
കോഡ് മാറ്റമില്ലാതെ ഏത് മെഷീനിലും പ്രവർത്തിക്കുന്നു. എന്നാൽ ചില കാര്യമായ പ്രശ്നങ്ങളുണ്ട്
പോർട്ടബിൾ കോഡ് എഴുതുന്നതിൽ, ഈ പ്രമാണം പൂർണ്ണമായും ആ പ്രശ്നങ്ങളെക്കുറിച്ചാണ്.
പൊതുവായ നിയമം ഇതാണ്: നിങ്ങൾ ഒരു മുഴുവൻ ശ്രേണിയും ഉപയോഗിച്ച് സാധാരണയായി ചെയ്യുന്ന ഒരു ടാസ്ക്കിനെ സമീപിക്കുമ്പോൾ
പ്ലാറ്റ്ഫോമുകൾ, പോർട്ടബിൾ കോഡ് എഴുതുന്നതിനെക്കുറിച്ച് ചിന്തിക്കുക. അങ്ങനെ, നിങ്ങൾ വഴിയിൽ അധികം ത്യാഗം ചെയ്യില്ല
നിങ്ങൾക്ക് സ്വയം പ്രയോജനപ്പെടുത്താൻ കഴിയുന്ന, അതേ സമയം നിങ്ങൾക്ക് നൽകാവുന്ന നടപ്പിലാക്കൽ തിരഞ്ഞെടുപ്പുകൾ
നിങ്ങളുടെ ഉപയോക്താക്കൾക്ക് ധാരാളം പ്ലാറ്റ്ഫോം ചോയിസുകൾ. മറുവശത്ത്, നിങ്ങൾ പ്രയോജനപ്പെടുത്തേണ്ടിവരുമ്പോൾ
സിസ്റ്റങ്ങളുടെ കാര്യത്തിലെന്നപോലെ, ഒരു പ്രത്യേക പ്ലാറ്റ്ഫോമിന്റെ ചില സവിശേഷ സവിശേഷതകൾ
പ്രോഗ്രാമിംഗ് (യുണിക്സ്, വിൻഡോസ്, വിഎംഎസ്, മുതലായവ) പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ടമായ എഴുത്ത് പരിഗണിക്കുക
കോഡ്.
രണ്ടോ മൂന്നോ ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിൽ മാത്രം കോഡ് പ്രവർത്തിക്കുമ്പോൾ, നിങ്ങൾ പരിഗണിക്കേണ്ടതുണ്ട്
ആ പ്രത്യേക സംവിധാനങ്ങളുടെ വ്യത്യാസങ്ങൾ മാത്രം. എവിടെയാണെന്ന് തീരുമാനിക്കുക എന്നതാണ് പ്രധാന കാര്യം
കോഡ് പ്രവർത്തിക്കും, നിങ്ങളുടെ തീരുമാനത്തിൽ മനഃപൂർവമായിരിക്കും.
ചുവടെയുള്ള മെറ്റീരിയലിനെ മൂന്ന് പ്രധാന വിഭാഗങ്ങളായി തിരിച്ചിരിക്കുന്നു: പോർട്ടബിലിറ്റിയുടെ പ്രധാന പ്രശ്നങ്ങൾ
("പ്രശ്നങ്ങൾ"), പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ട പ്രശ്നങ്ങൾ ("പ്ലാറ്റ്ഫോംസ്"), ബിൽറ്റ്-ഇൻ പേൾ പ്രവർത്തനങ്ങൾ
വിവിധ പോർട്ടുകളിൽ വ്യത്യസ്തമായി പെരുമാറുക ("ഫംഗ്ഷൻ നടപ്പിലാക്കലുകൾ").
ഈ വിവരങ്ങൾ പൂർണ്ണമായി കണക്കാക്കരുത്; അതിൽ ക്ഷണികമായത് ഉൾപ്പെടുന്നു
ചില തുറമുഖങ്ങളുടെ വ്യതിരിക്തതയെക്കുറിച്ചുള്ള വിവരങ്ങൾ, മിക്കവാറും എല്ലാം ഒരു അവസ്ഥയിലാണ്
നിരന്തരമായ പരിണാമത്തിന്റെ. അതിനാൽ, ഈ മെറ്റീരിയൽ ശാശ്വതമായ ഒരു ജോലിയായി കണക്കാക്കണം
പുരോഗതി (" ").
ISSUES
പുതിയ ലൈനുകൾ
മിക്ക ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിലും, ഫയലുകളിലെ ലൈനുകൾ ന്യൂലൈനുകൾ വഴി അവസാനിപ്പിക്കും. ഉപയോഗിച്ചത് മാത്രം
ഒരു പുതിയ ലൈൻ OS മുതൽ OS വരെ വ്യത്യാസപ്പെടാം. Unix പരമ്പരാഗതമായി "\012" ഉപയോഗിക്കുന്നു, ഒരു തരം ഡോസിഷ്
I/O "\015\012" ഉപയോഗിക്കുന്നു, Mac OS "\015" ഉപയോഗിക്കുന്നു, z/OS "\025" ഉപയോഗിക്കുന്നു.
"ലോജിക്കൽ" ന്യൂലൈനെ പ്രതിനിധീകരിക്കാൻ പേൾ "\n" ഉപയോഗിക്കുന്നു, ഇവിടെ ലോജിക്കൽ എന്താണെന്നതിനെ ആശ്രയിച്ചിരിക്കും
ഉപയോഗത്തിലുള്ള പ്ലാറ്റ്ഫോം. MacPerl-ൽ, "\n" എല്ലായ്പ്പോഴും "\015" എന്നാണ് അർത്ഥമാക്കുന്നത്. EBCDIC പ്ലാറ്റ്ഫോമുകളിൽ, "\n" എന്നതിന് കഴിയും
"\025" അല്ലെങ്കിൽ "\045" ആകുക. ഡോസിഷ് പെർലുകളിൽ, "\n" സാധാരണയായി "\012" എന്നാണ് അർത്ഥമാക്കുന്നത്, എന്നാൽ ആക്സസ് ചെയ്യുമ്പോൾ a
"ടെക്സ്റ്റ്" മോഡിൽ ഫയൽ, perl അതിനെ വിവർത്തനം ചെയ്യുന്ന ":crlf" ലെയർ ഉപയോഗിക്കുന്നു (അല്ലെങ്കിൽ അതിൽ നിന്ന്)
"\015\012", നിങ്ങൾ വായിക്കുകയാണോ എഴുതുകയാണോ എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു. Unix-ലും ഇതുതന്നെ ചെയ്യുന്നു
കാനോനിക്കൽ മോഡിൽ ttys. "\015\012" സാധാരണയായി CRLF എന്ന് വിളിക്കപ്പെടുന്നു.
ടെക്സ്റ്റ് ലൈനുകളിൽ നിന്ന് ട്രെയിലിംഗ് ന്യൂലൈനുകൾ ട്രിം ചെയ്യാൻ "chomp()" ഉപയോഗിക്കുക. സ്ഥിരസ്ഥിതി ക്രമീകരണങ്ങളോടെ അത്
ഫംഗ്ഷൻ ഒരു "\n" പ്രതീകത്തിനായി തിരയുന്നു, അങ്ങനെ പോർട്ടബിൾ രീതിയിൽ ട്രിം ചെയ്യുന്നു.
ബൈനറി ഫയലുകൾ (അല്ലെങ്കിൽ ബൈനറി മോഡിലുള്ള ടെക്സ്റ്റ് ഫയലുകൾ) കൈകാര്യം ചെയ്യുമ്പോൾ $/ വ്യക്തമായി സജ്ജീകരിക്കുന്നത് ഉറപ്പാക്കുക.
"chomp()" ഉപയോഗിക്കുന്നതിന് മുമ്പ് നിങ്ങളുടെ ഫയൽ ഫോർമാറ്റിന് അനുയോജ്യമായ മൂല്യത്തിലേക്ക്.
"ടെക്സ്റ്റ്" മോഡ് വിവർത്തനം കാരണം, ഡോസിഷ് പെർലുകൾക്ക് "സീക്ക്" ഉപയോഗിക്കുന്നതിന് പരിമിതികളുണ്ട്
"ടെക്സ്റ്റ്" മോഡിൽ ആക്സസ് ചെയ്ത ഫയലിൽ "പറയുക". നിങ്ങൾക്ക് ലഭിച്ച ലൊക്കേഷനുകളിലേക്ക് "അന്വേഷിക്കുക" എന്നതിൽ ഉറച്ചുനിൽക്കുക
"പറയുക" (മറ്റുള്ളവരില്ല), കൂടാതെ "ടെക്സ്റ്റിൽ" പോലും "തിരയുക", "പറയുക" എന്നിവ ഉപയോഗിക്കാൻ നിങ്ങൾക്ക് സാധാരണയായി സ്വാതന്ത്ര്യമുണ്ട്.
മോഡ്. "സീക്ക്" അല്ലെങ്കിൽ "ടെൽ" അല്ലെങ്കിൽ മറ്റ് ഫയൽ പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നത് പോർട്ടബിൾ അല്ലായിരിക്കാം. നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ
ഒരു ഫയലിൽ "binmode", എന്നിരുന്നാലും, നിങ്ങൾക്ക് സാധാരണയായി അനിയന്ത്രിതമായ മൂല്യങ്ങൾ ഉപയോഗിച്ച് "തിരയാനും" "പറയാനും" കഴിയും
സുരക്ഷിതമായി.
സോക്കറ്റ് പ്രോഗ്രാമിംഗിലെ ഒരു പൊതു തെറ്റിദ്ധാരണയാണ് "\n eq \012" എല്ലായിടത്തും. ഉപയോഗിക്കുമ്പോൾ
സാധാരണ ഇന്റർനെറ്റ് പ്രോട്ടോക്കോളുകൾ, "\012", "\015" എന്നിവ പോലുള്ള പ്രോട്ടോക്കോളുകൾ വിളിക്കപ്പെടുന്നു
പ്രത്യേകമായി, ലോജിക്കൽ "\n", "\r" എന്നിവയുടെ മൂല്യങ്ങൾ (കാരേജ് റിട്ടേൺ) അല്ല
വിശ്വസനീയമായ
പ്രിന്റ് സോക്കറ്റ് "ഹായ്, ക്ലയന്റ്!\r\n"; # തെറ്റ്
പ്രിന്റ് സോക്കറ്റ് "ഹായ്, ക്ലയന്റ്!\015\012"; # ശരി
എന്നിരുന്നാലും, "\015\012" (അല്ലെങ്കിൽ "\cM\cJ", അല്ലെങ്കിൽ "\x0D\x0A") ഉപയോഗിക്കുന്നത് മടുപ്പിക്കുന്നതും അരോചകവുമാണ്.
കോഡ് പരിപാലിക്കുന്നവരെ ആശയക്കുഴപ്പത്തിലാക്കുന്നു. അതുപോലെ, "സോക്കറ്റ്" മൊഡ്യൂൾ വിതരണം ചെയ്യുന്നു
അത് ആഗ്രഹിക്കുന്നവർക്ക് ശരിയായ കാര്യം.
സോക്കറ്റ് qw(:DEFAULT :crlf) ഉപയോഗിക്കുക;
പ്രിന്റ് സോക്കറ്റ് "ഹായ്, ക്ലയന്റ്!$CRLF" # വലത്
ഒരു സോക്കറ്റിൽ നിന്ന് വായിക്കുമ്പോൾ, ഡിഫോൾട്ട് ഇൻപുട്ട് റെക്കോർഡ് സെപ്പറേറ്റർ $/ എന്നത് "\n" ആണെന്ന് ഓർക്കുക,
എന്നാൽ ശക്തമായ സോക്കറ്റ് കോഡ് വരിയുടെ അവസാനമായി "\012" അല്ലെങ്കിൽ "\015\012" ആയി തിരിച്ചറിയും:
സമയത്ത് ( ) { # ഉചിതമല്ല!
#...
}
CRLF-ഉം LF-ഉം LF-ൽ അവസാനിക്കുന്നതിനാൽ, ഇൻപുട്ട് റെക്കോർഡ് സെപ്പറേറ്റർ LF-ലേയ്ക്കും ഏതെങ്കിലും CR-ലേയ്ക്കും സജ്ജമാക്കാൻ കഴിയും.
പിന്നീട് ഉരിഞ്ഞു. എഴുതുന്നതാണ് നല്ലത്:
സോക്കറ്റ് qw(:DEFAULT :crlf) ഉപയോഗിക്കുക;
പ്രാദേശിക ($/) = LF; $/ ഇതിനകം \012 ആണെങ്കിൽ # ആവശ്യമില്ല
സമയത്ത് ( ) {
s/$CR?$LF/\n/; # സോക്കറ്റ് LF ആണോ CRLF ആണോ ഉപയോഗിക്കുന്നതെന്ന് ഉറപ്പില്ല, ശരി
# s/\015?\012/\n/; #അതേ കാര്യം
}
ഈ ഉദാഹരണം മുമ്പത്തേതിനേക്കാൾ മുൻഗണന നൽകുന്നു - Unix പ്ലാറ്റ്ഫോമുകൾക്ക് പോലും - കാരണം ഇപ്പോൾ ഏതെങ്കിലും
"\015" ന്റെ ("\cM") നീക്കം ചെയ്യപ്പെട്ടു (കൂടുതൽ ആഹ്ലാദവും ഉണ്ടായിരുന്നു).
അതുപോലെ, ടെക്സ്റ്റ് ഡാറ്റ നൽകുന്ന ഫംഗ്ഷനുകൾ--ഒരു വെബ് ലഭ്യമാക്കുന്ന ഒരു ഫംഗ്ഷൻ പോലുള്ളവ
പേജ്--ഇതുവരെ ഡാറ്റ നൽകുന്നതിന് മുമ്പ് പുതിയ ലൈനുകൾ വിവർത്തനം ചെയ്തിട്ടില്ലെങ്കിൽ
പ്രാദേശിക ന്യൂലൈൻ പ്രാതിനിധ്യത്തിലേക്ക് വിവർത്തനം ചെയ്തു. കോഡിന്റെ ഒരു വരി പലപ്പോഴും ഉണ്ടാകും
മതി:
$ഡാറ്റ =~ s/\015?\012/\n/g;
$ഡാറ്റ തിരികെ നൽകുക;
ഇതിൽ ചിലത് ആശയക്കുഴപ്പമുണ്ടാക്കാം. ASCII CR, LF എന്നിവയെ കുറിച്ചുള്ള ഒരു സുപ്രധാന റഫറൻസ് ഇതാ
കഥാപാത്രങ്ങൾ. നിങ്ങൾക്ക് ഇത് പ്രിന്റ് എടുത്ത് നിങ്ങളുടെ വാലറ്റിൽ ഒട്ടിക്കാം.
LF eq \012 eq \x0A eq \cJ eq ബി.സി(10) eq ASCII 10
CR eq \015 eq \x0D eq \cM eq ബി.സി(13) eq ASCII 13
| Unix | ഡോസ് | മാക് |
---------------------------
\n | LF | LF | CR |
\r | CR | CR | LF |
\n * | LF | CRLF | CR |
\r * | CR | CR | LF |
---------------------------
* ടെക്സ്റ്റ് മോഡ് STDIO
നിങ്ങൾ കാനോനിക്കലിലുള്ള ഒരു സീരിയൽ ലൈൻ (tty പോലെ) ആക്സസ് ചെയ്യുന്നില്ലെന്ന് Unix കോളം അനുമാനിക്കുന്നു
മോഡ്. നിങ്ങളാണെങ്കിൽ, ഇൻപുട്ടിലെ CR "\n" ആയി മാറുന്നു, കൂടാതെ "\n" ഔട്ട്പുട്ടിൽ CRLF ആയി മാറുന്നു.
പേളിലെ "\n", "\r" എന്നിവയുടെ ഏറ്റവും സാധാരണമായ നിർവചനങ്ങൾ മാത്രമാണിത്. നല്ലതായിരിക്കാം
മറ്റുള്ളവർ. ഉദാഹരണത്തിന്, z/OS (OS/390) അല്ലെങ്കിൽ OS/400 (ഉപയോഗിക്കുന്നത്) പോലെയുള്ള ഒരു EBCDIC നടപ്പിലാക്കലിൽ
ILE, PASE ASCII അടിസ്ഥാനമാക്കിയുള്ളതാണ്) മുകളിലെ മെറ്റീരിയൽ "Unix" പോലെയാണ്, പക്ഷേ കോഡ്
സംഖ്യകൾ മാറുന്നു:
LF eq \025 eq \x15 eq \cU eq ബി.സി(21) eq CP-1047 21
LF eq \045 eq \x25 eq ബി.സി(37) eq CP-0037 37
CR eq \015 eq \x0D eq \cM eq ബി.സി(13) eq CP-1047 13
CR eq \015 eq \x0D eq \cM eq ബി.സി(13) eq CP-0037 13
| z/OS | OS/400 |
----------------------
\n | LF | LF |
\r | CR | CR |
\n * | LF | LF |
\r * | CR | CR |
----------------------
* ടെക്സ്റ്റ് മോഡ് STDIO
സംഖ്യാപുസ്തകം സഹിഷ്ണുത ഒപ്പം വീതി
വ്യത്യസ്ത CPU-കൾ പൂർണ്ണസംഖ്യകളും ഫ്ലോട്ടിംഗ് പോയിന്റ് നമ്പറുകളും വ്യത്യസ്ത ഓർഡറുകളിൽ സംഭരിക്കുന്നു (വിളിക്കുന്നത്
സഹിഷ്ണുത) വീതിയും (32-ബിറ്റും 64-ബിറ്റും ഇന്ന് ഏറ്റവും സാധാരണമാണ്). ഇത് നിങ്ങളെ ബാധിക്കുന്നു
ഒരു സിപിയു ആർക്കിടെക്ചറിൽ നിന്ന് ബൈനറി ഫോർമാറ്റിൽ നമ്പറുകൾ കൈമാറാൻ ശ്രമിക്കുമ്പോൾ പ്രോഗ്രാമുകൾ
മറ്റൊന്നിലേക്ക്, സാധാരണയായി ഒന്നുകിൽ "ലൈവ്" നെറ്റ്വർക്ക് കണക്ഷൻ വഴിയോ അല്ലെങ്കിൽ നമ്പറുകൾ സംഭരിച്ചുകൊണ്ടോ
ഒരു ഡിസ്ക് ഫയൽ അല്ലെങ്കിൽ ടേപ്പ് പോലെയുള്ള ദ്വിതീയ സംഭരണം.
വൈരുദ്ധ്യമുള്ള സ്റ്റോറേജ് ഓർഡറുകൾ സംഖ്യകളെ തീർത്തും കുഴപ്പത്തിലാക്കുന്നു. ഒരു ചെറിയ-എൻഡിയൻ ഹോസ്റ്റ് ആണെങ്കിൽ
(Intel, VAX) 0x12345678 (ദശാംശത്തിൽ 305419896), ഒരു ബിഗ്-എൻഡിയൻ ഹോസ്റ്റ് (മോട്ടറോള, സ്പാർക്,
PA) ഇത് 0x78563412 (2018915346 ദശാംശത്തിൽ) ആയി വായിക്കുന്നു. ആൽഫയും എംഐപിഎസും ഒന്നായിരിക്കാം:
ഡിജിറ്റൽ/കോംപാക്ക് അവ ലിറ്റിൽ-എൻഡിയൻ മോഡിൽ ഉപയോഗിക്കുന്നു/ഉപയോഗിക്കുന്നു; SGI/Cray അവരെ ബിഗ്-എൻഡിയനിൽ ഉപയോഗിക്കുന്നു
മോഡ്. നെറ്റ്വർക്ക് (സോക്കറ്റ്) കണക്ഷനുകളിലെ ഈ പ്രശ്നം ഒഴിവാക്കാൻ "പാക്ക്", "അൺപാക്ക്" എന്നിവ ഉപയോഗിക്കുക
ഫോർമാറ്റുകൾ "n", "N", "നെറ്റ്വർക്ക്" ഓർഡറുകൾ. ഇവ പോർട്ടബിൾ ആയിരിക്കുമെന്ന് ഉറപ്പുനൽകുന്നു.
Perl 5.10.0 പോലെ, നിങ്ങൾക്ക് ">", "<" മോഡിഫയറുകൾ ഉപയോഗിച്ച് വലുതോ ചെറുതോ- നിർബന്ധിക്കാൻ കഴിയും.
endian byte-order. സൈൻ ചെയ്ത പൂർണ്ണസംഖ്യകളോ 64-ബിറ്റുകളോ സംഭരിക്കണമെങ്കിൽ ഇത് ഉപയോഗപ്രദമാണ്
പൂർണ്ണസംഖ്യകൾ, ഉദാഹരണത്തിന്.
പാക്ക് ചെയ്തിരിക്കുന്ന ഒരു ഡാറ്റാ ഘടന അൺപാക്ക് ചെയ്ത് നിങ്ങളുടെ പ്ലാറ്റ്ഫോമിന്റെ അന്തസ്സ് പര്യവേക്ഷണം ചെയ്യാം
ഇനിപ്പറയുന്നതുപോലുള്ള നേറ്റീവ് ഫോർമാറ്റ്:
പ്രിന്റ് അൺപാക്ക് ("h*", പാക്ക്("s2", 1, 2)), "\n";
# '10002000' ലിറ്റിൽ-എൻഡിയൻ മോഡിൽ Intel x86 അല്ലെങ്കിൽ Alpha 21064
# '00100020' ഉദാ Motorola 68040
നിങ്ങൾക്ക് എൻഡിയൻ ആർക്കിടെക്ചറുകൾ തമ്മിൽ വേർതിരിക്കണമെങ്കിൽ ഇവയിലേതെങ്കിലും ഉപയോഗിക്കാം
വേരിയബിളുകൾ ഇതുപോലെ സജ്ജീകരിച്ചിരിക്കുന്നു:
$is_big_endian = unpack("h*", pack("s", 1)) =~ /01/;
$is_little_endian = unpack("h*", pack("s", 1)) =~ /^1/;
തുല്യ അന്തസ്സുള്ള പ്ലാറ്റ്ഫോമുകൾക്കിടയിൽ പോലും വ്യത്യസ്ത വീതികൾ വെട്ടിച്ചുരുക്കലിന് കാരണമാകും. ദി
വീതി കുറഞ്ഞ പ്ലാറ്റ്ഫോം നമ്പറിന്റെ മുകൾ ഭാഗങ്ങൾ നഷ്ടപ്പെടുത്തുന്നു. നല്ല പരിഹാരമില്ല
അസംസ്കൃത ബൈനറി നമ്പറുകൾ കൈമാറ്റം ചെയ്യുന്നതോ സംഭരിക്കുന്നതോ ഒഴിവാക്കുന്നതിന് ഒഴികെ ഈ പ്രശ്നത്തിന്.
ഒരാൾക്ക് ഈ രണ്ട് പ്രശ്നങ്ങളും രണ്ട് തരത്തിൽ മറികടക്കാൻ കഴിയും. ഒന്നുകിൽ നമ്പറുകൾ കൈമാറുകയും സംഭരിക്കുകയും ചെയ്യുക
അസംസ്കൃത ബൈനറിക്ക് പകരം എപ്പോഴും ടെക്സ്റ്റ് ഫോർമാറ്റിൽ, അല്ലെങ്കിൽ ഇതുപോലുള്ള മൊഡ്യൂളുകൾ ഉപയോഗിക്കുന്നത് പരിഗണിക്കുക
"ഡാറ്റ::ഡമ്പർ", "സ്റ്റോറബിൾ" (പേൾ 5.8-ൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നത്). എല്ലാ ഡാറ്റയും വാചകമായി സൂക്ഷിക്കുന്നു
കാര്യങ്ങളെ കാര്യമായി ലളിതമാക്കുന്നു.
വി-സ്ട്രിംഗുകൾ v2147483647 (0x7FFF_FFFF) വരെ മാത്രമേ പോർട്ടബിൾ ആകൂ, അത്രമാത്രം EBCDIC, അല്ലെങ്കിൽ
കൂടുതൽ കൃത്യമായി UTF-EBCDIC പോകും.
ഫയലുകൾ ഒപ്പം ഫയൽസിസ്റ്റംസ്
ഇന്നത്തെ മിക്ക പ്ലാറ്റ്ഫോമുകളും ഒരു ശ്രേണിക്രമത്തിലാണ് ഫയലുകൾ നിർമ്മിക്കുന്നത്. അതിനാൽ, അത് യുക്തിസഹമാണ്
എല്ലാ പ്ലാറ്റ്ഫോമുകളും അദ്വിതീയമായി തിരിച്ചറിയുന്നതിനുള്ള ഒരു "പാത്ത്" എന്ന ആശയത്തെ പിന്തുണയ്ക്കുന്നുവെന്ന് അനുമാനിക്കുന്നത് സുരക്ഷിതമാണ്
സിസ്റ്റത്തിലെ ഫയൽ. ആ പാത യഥാർത്ഥത്തിൽ എങ്ങനെ എഴുതിയിരിക്കുന്നു, എന്നിരുന്നാലും കാര്യമായ വ്യത്യാസമുണ്ട്.
സമാനമാണെങ്കിലും, ഫയൽ പാത്ത് സ്പെസിഫിക്കേഷനുകൾ Unix, Windows, Mac OS, OS/2,
VMS, VOS, RISC OS എന്നിവയും മറ്റുള്ളവയും. ഉദാഹരണത്തിന്, യുണിക്സ് ചില ഒഎസുകളിൽ ഒന്നാണ്
ഒരൊറ്റ റൂട്ട് ഡയറക്ടറി എന്ന ഗംഭീരമായ ആശയം ഉണ്ട്.
ഡോസ്, ഒഎസ്/2, വിഎംഎസ്, വിഒഎസ്, വിൻഡോസ് എന്നിവയ്ക്ക് യുണിക്സിന് സമാനമായി "/" ഉപയോഗിച്ച് പാത്ത് സെപ്പറേറ്ററായി പ്രവർത്തിക്കാൻ കഴിയും, അല്ലെങ്കിൽ
അവരുടേതായ വ്യതിരിക്തമായ വഴികളിൽ (നിരവധി റൂട്ട് ഡയറക്ടറികളും വ്യത്യസ്തവും ഉള്ളത് പോലെ
"unrooted" ഉപകരണ ഫയലുകൾ NIL: കൂടാതെ LPT:).
Mac OS 9 ഉം അതിനുമുമ്പും "/" എന്നതിനുപകരം ഒരു പാത്ത് സെപ്പറേറ്ററായി ":" ഉപയോഗിച്ചിരുന്നു.
ഫയൽസിസ്റ്റം ഹാർഡ് ലിങ്കുകളോ ("ലിങ്ക്") പ്രതീകാത്മക ലിങ്കുകളോ ("സിംലിങ്ക്",
"റീഡ്ലിങ്ക്", "lstat").
ഫയൽസിസ്റ്റം ടൈംസ്റ്റാമ്പ് ആക്സസ് ചെയ്യുകയോ ടൈംസ്റ്റാമ്പ് മാറ്റുകയോ ചെയ്യില്ല (അതായത്
പോർട്ടബിൾ ടൈംസ്റ്റാമ്പ് പരിഷ്ക്കരണ ടൈംസ്റ്റാമ്പ് ആണ്), അല്ലെങ്കിൽ ഒരു സെക്കൻഡ്
ഏതെങ്കിലും ടൈംസ്റ്റാമ്പുകളുടെ ഗ്രാനുലാരിറ്റി (ഉദാ. FAT ഫയൽസിസ്റ്റം സമയ ഗ്രാനുലാരിറ്റി രണ്ടായി പരിമിതപ്പെടുത്തുന്നു
സെക്കൻഡ്).
"ഇനോഡ് മാറ്റ ടൈംസ്റ്റാമ്പ്" ("-സി" ഫയൽ ടെസ്റ്റ്) യഥാർത്ഥത്തിൽ "ക്രിയേഷൻ ടൈംസ്റ്റാമ്പ്" ആയിരിക്കാം
(അത് യുണിക്സിൽ ഇല്ല).
VOS perl-ന് Unix ഫയൽനാമങ്ങൾ പാത്ത് സെപ്പറേറ്ററായി "/" ഉപയോഗിച്ച് അനുകരിക്കാനാകും. നാട്ടുവഴിയുടെ പേര്
അക്ഷരങ്ങളെക്കാൾ വലുത്, കുറവ്, നമ്പർ ചിഹ്നം, ശതമാനം ചിഹ്നം എന്നിവ എപ്പോഴും സ്വീകരിക്കപ്പെടും.
RISC OS perl-ന് Unix ഫയൽനാമങ്ങൾ പാത്ത് സെപ്പറേറ്ററായി "/" ഉപയോഗിച്ച് അനുകരിക്കാനാകും, അല്ലെങ്കിൽ നേറ്റീവ് ആയി പോയി ഉപയോഗിക്കുക
"." പാത്ത് സെപ്പറേറ്ററിനും ഫയൽസിസ്റ്റം, ഡിസ്ക് നാമങ്ങൾ എന്നിവ സിഗ്നൽ ചെയ്യുന്നതിനായി ":".
Unix ഫയൽസിസ്റ്റം ആക്സസ് സെമാന്റിക്സ് അനുമാനിക്കരുത്: അത് വായിക്കുക, എഴുതുക, നടപ്പിലാക്കുക എല്ലാം
അനുമതികൾ ഉണ്ട്, അവ നിലവിലുണ്ടെങ്കിൽ പോലും, അവയുടെ അർത്ഥശാസ്ത്രം (ഉദാഹരണത്തിന് എന്തുചെയ്യണം
"r", "w", "x" എന്നിവ ഒരു ഡയറക്ടറിയിൽ അർത്ഥമാക്കുന്നു) ഇവയാണ് Unix. വിവിധ Unix/POSIX
കോംപാറ്റിബിലിറ്റി ലെയറുകൾ സാധാരണയായി "chmod()" പോലുള്ള ഇന്റർഫേസുകൾ പ്രവർത്തിക്കാൻ ശ്രമിക്കുന്നു, പക്ഷേ ചിലപ്പോൾ
നല്ല മാപ്പിംഗ് ഇല്ല.
ഇതെല്ലാം ഭയപ്പെടുത്തുന്നതാണെങ്കിൽ, ഭയപ്പെടേണ്ടതില്ല (നന്നായി, ഒരുപക്ഷേ കുറച്ച് മാത്രം). മൊഡ്യൂളുകൾ ഉണ്ട്
അത് സഹായിക്കും. "ഫയൽ::സ്പെക്ക്" മൊഡ്യൂളുകൾ ഏത് കാര്യത്തിലും ശരിയായ കാര്യം ചെയ്യുന്നതിനുള്ള രീതികൾ നൽകുന്നു
പ്ലാറ്റ്ഫോം പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുന്നത് സംഭവിക്കുന്നു.
ഫയൽ:: സ്പെക്:: ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുക;
chdir(updir()); # ഒരു ഡയറക്ടറി മുകളിലേക്ക് പോകുക
എന്റെ $ ഫയൽ = catfile(curdir(), 'temp', 'file.txt');
# Unix-ലും Win32-ലും, './temp/file.txt'
# Mac OS ക്ലാസിക്കിൽ, ':temp:file.txt'
# VMS-ൽ, '[.temp]file.txt'
പതിപ്പ് 5.004_05-ലെ സ്റ്റാൻഡേർഡ് ഡിസ്ട്രിബ്യൂഷനിൽ "ഫയൽ::സ്പെക്ക്" ലഭ്യമാണ്.
"File::Spec::Functions" എന്നത് "File::Spec" 0.7-ലും അതിനുശേഷമുള്ളവയിലും Perl-ന്റെ ചില പതിപ്പുകളിലും മാത്രമാണ്.
പതിപ്പ് 0.6 ഉപയോഗിച്ച് വരൂ. "ഫയൽ::സ്പെക്ക്" 0.7 അല്ലെങ്കിൽ അതിനു ശേഷമുള്ളതിലേക്ക് അപ്ഡേറ്റ് ചെയ്തിട്ടില്ലെങ്കിൽ, നിങ്ങൾ ഉപയോഗിക്കണം
"ഫയൽ:: സ്പെക്" (അല്ലെങ്കിൽ "ഫയൽ:: സ്പെക്" നവീകരിക്കുക) എന്നതിൽ നിന്നുള്ള ഒബ്ജക്റ്റ്-ഓറിയന്റഡ് ഇന്റർഫേസ്.
പൊതുവേ, പ്രൊഡക്ഷൻ കോഡിന് ഫയൽ പാത്തുകൾ ഹാർഡ്കോഡ് ചെയ്യരുത്. അവരെ ഉപയോക്താവാക്കുന്നു-
ഒരു കോൺഫിഗറേഷൻ ഫയലിൽ നിന്ന് വിതരണം ചെയ്യുകയോ വായിക്കുകയോ ചെയ്യുന്നതാണ് നല്ലത്, ആ ഫയൽ പാത്ത് മനസ്സിൽ വയ്ക്കുക
വ്യത്യസ്ത മെഷീനുകളിൽ വാക്യഘടന വ്യത്യാസപ്പെടുന്നു.
മെയ്ക്ക് ഫയലുകൾ, ടെസ്റ്റ് സ്യൂട്ടുകൾ എന്നിവ പോലുള്ള സ്ക്രിപ്റ്റുകളിൽ ഇത് പ്രത്യേകിച്ചും ശ്രദ്ധേയമാണ്
ഉപഡയറക്ടറികൾക്കുള്ള പാത്ത് സെപ്പറേറ്ററായി "/" അനുമാനിക്കുക.
ഒരു പാത്ത് നെയിം വിഭജിക്കുന്ന സ്റ്റാൻഡേർഡ് ഡിസ്ട്രിബ്യൂഷനിൽ നിന്നുള്ള "ഫയൽ:: ബേസ്നെയിം" എന്നതും ഉപയോഗപ്രദമാണ്
കഷണങ്ങളായി (അടിസ്ഥാന ഫയലിന്റെ പേര്, ഡയറക്ടറിയിലേക്കുള്ള പൂർണ്ണ പാത, ഫയൽ പ്രത്യയം).
ഒരൊറ്റ പ്ലാറ്റ്ഫോമിലായിരിക്കുമ്പോഴും (നിങ്ങൾക്ക് യുണിക്സിനെ ഒരൊറ്റ പ്ലാറ്റ്ഫോം എന്ന് വിളിക്കാമെങ്കിൽ), ഓർക്കരുത്
പ്രത്യേക സിസ്റ്റം-നിർദ്ദിഷ്ട ഫയലുകളുടെയോ ഡയറക്ടറികളുടെയോ അസ്തിത്വത്തെയോ ഉള്ളടക്കത്തെയോ കണക്കാക്കുക,
പോലെ / etc / passwd, /etc/sendmail.conf, /etc/resolv.conf, അല്ലെങ്കിൽ പോലും / tmp /. ഉദാഹരണത്തിന്,
/ etc / passwd സിസ്റ്റം ഉപയോഗിക്കുന്നതിനാൽ എൻക്രിപ്റ്റ് ചെയ്ത പാസ്വേഡുകൾ നിലവിലുണ്ടാകാം പക്ഷേ അതിൽ അടങ്ങിയിരിക്കില്ല
ചില മെച്ചപ്പെട്ട സുരക്ഷ. അല്ലെങ്കിൽ അതിൽ എല്ലാ അക്കൗണ്ടുകളും അടങ്ങിയിരിക്കണമെന്നില്ല, കാരണം
സിസ്റ്റം NIS ഉപയോഗിക്കുന്നു. കോഡ് അത്തരമൊരു ഫയലിനെ ആശ്രയിക്കേണ്ടതുണ്ടെങ്കിൽ, ഒരു വിവരണം ഉൾപ്പെടുത്തുക
കോഡിന്റെ ഡോക്യുമെന്റേഷനിൽ ഫയലും അതിന്റെ ഫോർമാറ്റും, തുടർന്ന് ഉപയോക്താവിന് അത് എളുപ്പമാക്കുക
ഫയലിന്റെ സ്ഥിരസ്ഥിതി സ്ഥാനം അസാധുവാക്കുക.
ഒരു ടെക്സ്റ്റ് ഫയൽ ഒരു പുതിയ ലൈനിൽ അവസാനിക്കുമെന്ന് കരുതരുത്. അവർ ചെയ്യണം, പക്ഷേ ആളുകൾ മറക്കുന്നു.
വ്യത്യസ്ത കേസുള്ള ഒരേ പേരിൽ രണ്ട് ഫയലുകളോ ഡയറക്ടറികളോ ഉണ്ടാകരുത് test.pl
ഒപ്പം Test.pl, പല പ്ലാറ്റ്ഫോമുകളിലും കേസ്-ഇൻസെൻസിറ്റീവ് (അല്ലെങ്കിൽ കുറഞ്ഞത് കേസ് ക്ഷമിക്കുന്ന) ഉള്ളതിനാൽ
ഫയൽനാമങ്ങൾ. കൂടാതെ, പേരുകളിൽ പദമല്ലാത്ത പ്രതീകങ്ങൾ ("." ഒഴികെ) ഉണ്ടാകാതിരിക്കാൻ ശ്രമിക്കുക, കൂടാതെ
8.3 കൺവെൻഷനിൽ അവരെ സൂക്ഷിക്കുക, പരമാവധി പോർട്ടബിലിറ്റിക്ക് വേണ്ടി, ഇത് ഒരു ഭാരമാണെങ്കിലും
ദൃശ്യമാകുക.
അതുപോലെ, "AutoSplit" മൊഡ്യൂൾ ഉപയോഗിക്കുമ്പോൾ, നിങ്ങളുടെ പ്രവർത്തനങ്ങൾ 8.3 നാമകരണവും
കേസ്-ഇൻസെൻസിറ്റീവ് കൺവെൻഷനുകൾ; അല്ലെങ്കിൽ, കുറഞ്ഞത്, ഫലമായുണ്ടാകുന്ന ഫയലുകൾക്ക് ഒരു
അദ്വിതീയമായ (കേസ്-സെൻസിറ്റീവായി) ആദ്യത്തെ 8 പ്രതീകങ്ങൾ.
ഫയൽനാമങ്ങളിലെ വൈറ്റ്സ്പേസ് മിക്ക സിസ്റ്റങ്ങളിലും സഹിഷ്ണുത കാണിക്കുന്നു, എന്നാൽ എല്ലാം അല്ല, കൂടാതെ സിസ്റ്റങ്ങളിൽ പോലും
ഇത് സഹിക്കാവുന്നിടത്ത്, ചില യൂട്ടിലിറ്റികൾ അത്തരം വൈറ്റ്സ്പെയ്സ് വഴി ആശയക്കുഴപ്പത്തിലായേക്കാം.
പല സിസ്റ്റങ്ങളിലും (DOS, VMS ODS-2) ഒന്നിൽ കൂടുതൽ "." അവരുടെ ഫയൽ നാമങ്ങളിൽ.
ഒരു ഫയൽനാമത്തിന്റെ ആദ്യ പ്രതീകം ">" ആയിരിക്കില്ല എന്ന് കരുതരുത്. എല്ലായ്പ്പോഴും "<" വ്യക്തമായി ഉപയോഗിക്കുക
വായിക്കാൻ ഒരു ഫയൽ തുറക്കുക, അല്ലെങ്കിൽ അതിലും മികച്ചത്, നിങ്ങൾ ഒഴികെ "ഓപ്പൺ" എന്നതിന്റെ ത്രീ-ആർഗ് പതിപ്പ് ഉപയോഗിക്കുക
ഒരു പൈപ്പ് തുറന്നതായി വ്യക്തമാക്കാൻ ഉപയോക്താവിന് കഴിയണമെന്ന് ആഗ്രഹിക്കുന്നു.
എന്റെ $fh തുറക്കുക, '<', $existing_file) അല്ലെങ്കിൽ മരിക്കുക $!;
ഫയൽനാമങ്ങൾ വിചിത്രമായ പ്രതീകങ്ങൾ ഉപയോഗിച്ചാൽ, പകരം "sysopen" ഉപയോഗിച്ച് തുറക്കുന്നതാണ് സുരക്ഷിതം
"തുറന്ന". "ഓപ്പൺ" എന്നത് മാന്ത്രികമാണ്, കൂടാതെ ">", "<", "|" തുടങ്ങിയ പ്രതീകങ്ങൾ വിവർത്തനം ചെയ്യാൻ കഴിയും.
ചെയ്യേണ്ടത് തെറ്റായ കാര്യമായിരിക്കും. (ചിലപ്പോൾ, എന്നിരുന്നാലും, ഇത് ശരിയായ കാര്യമാണ്.) ത്രീ-ആർഗ് തുറന്ന ക്യാൻ
അഭികാമ്യമല്ലാത്ത സന്ദർഭങ്ങളിൽ ഈ വിവർത്തനത്തിനെതിരെ പരിരക്ഷിക്കാനും സഹായിക്കുക.
ഒരു ഫയൽനാമത്തിന്റെ ഭാഗമായി ":" ഉപയോഗിക്കരുത്, കാരണം പല സിസ്റ്റങ്ങളും അവരുടെ സ്വന്തം സെമാന്റിക്സിനായി അത് ഉപയോഗിക്കുന്നു
(പാത്ത് നെയിം ഘടകങ്ങൾ, നിരവധി നെറ്റ്വർക്കിംഗ് സ്കീമുകൾ, യൂട്ടിലിറ്റികൾ എന്നിവ വേർതിരിക്കുന്നതിനുള്ള Mac OS ക്ലാസിക്
നോഡെനെമും പാത്ത് നെയിമും വേർതിരിക്കുന്നതിനും മറ്റും). അതേ കാരണങ്ങളാൽ, ഒഴിവാക്കുക
"@", ";" കൂടാതെ "|".
പാത്ത് നെയിമുകളിൽ നിങ്ങൾക്ക് രണ്ട് മുൻനിര സ്ലാഷുകൾ "//" ഒന്നായി ചുരുക്കാൻ കഴിയുമെന്ന് കരുതരുത്: ചിലത്
നെറ്റ്വർക്കിംഗ്, ക്ലസ്റ്ററിംഗ് ഫയൽസിസ്റ്റമുകൾക്ക് അതിനായി പ്രത്യേക സെമാന്റിക്സ് ഉണ്ട്. ഓപ്പറേഷൻ നടക്കട്ടെ
സിസ്റ്റം അത് അടുക്കുക.
ദി വഹനീയമായ ഫയലിന്റെ പേര് പ്രതീകങ്ങൾ ANSI C നിർവചിച്ചിരിക്കുന്നത് പോലെ
abcdefghijklmnopqrtuv wxyz
ABCDEFGHIJKLMNOPQRTUV WXYZ
0 1 2 3 4 5 6 7 8
. _ -
കൂടാതെ "-" ആദ്യ പ്രതീകമായിരിക്കരുത്. നിങ്ങൾക്ക് ഹൈപ്പർ കറക്റ്റ് ആകണമെങ്കിൽ, കേസ് തുടരുക-
സെൻസിറ്റീവും 8.3 നാമകരണ കൺവെൻഷനും ഉള്ളിൽ (എല്ലാ ഫയലുകളും ഡയറക്ടറികളും ആയിരിക്കണം
ഒരു ഡയറക്ടറിക്കുള്ളിൽ അവയുടെ പേരുകൾ ചെറിയക്ഷരം ആക്കി എട്ടായി ചുരുക്കിയാൽ അതുല്യം
"" എന്നതിന് മുമ്പുള്ള പ്രതീകങ്ങൾ, എന്തെങ്കിലും ഉണ്ടെങ്കിൽ, കൂടാതെ "" എന്നതിന് ശേഷമുള്ള മൂന്ന് പ്രതീകങ്ങൾ, ഉണ്ടെങ്കിൽ). (ഒപ്പം
ഡയറക്ടറി നാമങ്ങളിൽ ""കൾ ഉപയോഗിക്കരുത്.)
സിസ്റ്റം ഇടപെടല്
എല്ലാ പ്ലാറ്റ്ഫോമുകളും ഒരു കമാൻഡ് ലൈൻ നൽകുന്നില്ല. ഇവ സാധാരണയായി പ്രധാനമായും ആശ്രയിക്കുന്ന പ്ലാറ്റ്ഫോമുകളാണ്
ഉപയോക്തൃ ഇടപെടലിനായി ഒരു ഗ്രാഫിക്കൽ യൂസർ ഇന്റർഫേസിൽ (GUI). ഒരു കമാൻഡ് ആവശ്യമുള്ള ഒരു പ്രോഗ്രാം
ലൈൻ ഇന്റർഫേസ് എല്ലായിടത്തും പ്രവർത്തിച്ചേക്കില്ല. ഇത് പ്രോഗ്രാമിന്റെ ഉപയോക്താവിന് വേണ്ടിയായിരിക്കാം
കൈകാര്യം ചെയ്യുക, അതിനാൽ അതിനെക്കുറിച്ച് വിഷമിച്ച് വൈകരുത്.
ചില പ്ലാറ്റ്ഫോമുകൾക്ക് സിസ്റ്റം തുറന്നിരിക്കുന്ന ഫയലുകൾ ഇല്ലാതാക്കാനോ പേരുമാറ്റാനോ കഴിയില്ല, ഈ പരിമിതി ഉണ്ടാകാം
ഫയൽ അനുമതികൾ അല്ലെങ്കിൽ ഉടമകൾ പോലുള്ള ഫയൽസിസ്റ്റം മെറ്റൈൻഫോർമേഷൻ മാറ്റുന്നതിനും ബാധകമാണ്.
ഫയലുകൾ പൂർത്തിയാക്കുമ്പോൾ അവ "ക്ലോസ്" ചെയ്യാൻ ഓർമ്മിക്കുക. തുറന്നത് "അൺലിങ്ക് ചെയ്യുക" അല്ലെങ്കിൽ "പേരുമാറ്റുക" ചെയ്യരുത്
ഫയൽ. ഇതിനകം കെട്ടിയതോ തുറന്നതോ ആയ ഫയൽ "കെട്ടുക" അല്ലെങ്കിൽ "തുറക്കുക" ചെയ്യരുത്; ആദ്യം "കെട്ടഴിക്കുക" അല്ലെങ്കിൽ "അടക്കുക".
ചില ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ പോലെ ഒരേ ഫയൽ ഒന്നിലധികം തവണ എഴുതാൻ തുറക്കരുത്
അത്തരം ഫയലുകളിൽ നിർബന്ധിത ലോക്കുകൾ ഇടുക.
ഒരു ഡയറക്ടറിയിലെ അനുമതി എഴുതുക/പരിഷ്ക്കരിക്കുക എന്നത് ചേർക്കാനോ ഇല്ലാതാക്കാനോ ഉള്ള അവകാശം നൽകുമെന്ന് കരുതരുത്
ആ ഡയറക്ടറിയിലെ ഫയലുകൾ/ഡയറക്ടറികൾ. അത് ഫയൽസിസ്റ്റം നിർദ്ദിഷ്ടമാണ്: ചില ഫയൽസിസ്റ്റങ്ങളിൽ നിങ്ങൾ
ഫയലിൽ/ഡയറക്ടറിയിൽ തന്നെ (അല്ലെങ്കിൽ പോലും) അനുമതി എഴുതുക/പരിഷ്ക്കരിക്കുക. ചിലതിൽ
ഫയൽസിസ്റ്റംസ് (AFS, DFS) ഡയറക്ടറി എൻട്രികൾ ചേർക്കാനും ഇല്ലാതാക്കാനുമുള്ള അനുമതി പൂർണ്ണമായും
പ്രത്യേക അനുമതി.
ഒരൊറ്റ "അൺലിങ്ക്" ഫയലിനെ പൂർണ്ണമായും ഒഴിവാക്കുമെന്ന് കരുതരുത്: ചില ഫയൽസിസ്റ്റങ്ങൾ
(പ്രത്യേകിച്ച് VMS-ൽ ഉള്ളവ) പതിപ്പ് ഫയൽസിസ്റ്റം ഉണ്ട്, കൂടാതെ "അൺലിങ്ക്()" നീക്കം ചെയ്യുന്നു
ഏറ്റവും പുതിയത് (ഇത് എല്ലാ പതിപ്പുകളും നീക്കം ചെയ്യുന്നില്ല, കാരണം സ്വതവേയുള്ള നേറ്റീവ് ടൂളുകൾ ഓണാണ്
ആ പ്ലാറ്റ്ഫോമുകൾ ഏറ്റവും പുതിയ പതിപ്പും നീക്കം ചെയ്യുന്നു). നീക്കം ചെയ്യാനുള്ള പോർട്ടബിൾ ഐഡിയം
ഒരു ഫയലിന്റെ എല്ലാ പതിപ്പുകളും
1 "ഫയൽ" അൺലിങ്ക് ചെയ്യുമ്പോൾ;
ചില കാരണങ്ങളാൽ ഫയൽ നീക്കം ചെയ്യാൻ കഴിയുന്നില്ലെങ്കിൽ ഇത് അവസാനിപ്പിക്കും (സംരക്ഷിച്ചിരിക്കുന്നു, അവിടെ ഇല്ല, കൂടാതെ
ഉടൻ).
%ENV-ൽ നിലവിലുള്ള ഒരു പ്രത്യേക പരിസ്ഥിതി വേരിയബിളിനെ കണക്കാക്കരുത്. %ENV കണക്കാക്കരുത്
എൻട്രികൾ കേസ്-സെൻസിറ്റീവ് അല്ലെങ്കിൽ കേസ്-പ്രിസർവിംഗ്. പറഞ്ഞുകൊണ്ട് %ENV മായ്ക്കാൻ ശ്രമിക്കരുത്
"%ENV = ();", അല്ലെങ്കിൽ, നിങ്ങൾക്ക് ശരിക്കും ആവശ്യമുണ്ടെങ്കിൽ, "$^O ne 'VMS'" എന്നതിൽ ഇത് സോപാധികമാക്കുക.
%ENV ടേബിൾ VMS എന്നത് ഓരോ പ്രോസസ് കീ-വാല്യൂ സ്ട്രിംഗ് ടേബിളിനേക്കാൾ വളരെ കൂടുതലാണ്.
VMS-ൽ, %ENV ഹാഷിലെ ചില എൻട്രികൾ അവയുടെ കീ ഉപയോഗിക്കുമ്പോൾ ചലനാത്മകമായി സൃഷ്ടിക്കപ്പെടുന്നു.
അവ മുമ്പ് നിലവിലില്ലെങ്കിൽ വായിക്കുക. $ENV{HOME}, $ENV{TERM}, $ENV{PATH} എന്നതിനായുള്ള മൂല്യങ്ങൾ,
ഒപ്പം $ENV{USER}, ചലനാത്മകമായി ജനറേറ്റുചെയ്തതായി അറിയപ്പെടുന്നു. നിർദ്ദിഷ്ട പേരുകൾ
VMS-ലെ C ലൈബ്രറിയുടെ പതിപ്പിനനുസരിച്ച് ചലനാത്മകമായി ജനറേറ്റ് ചെയ്തത് വ്യത്യാസപ്പെടാം
രേഖപ്പെടുത്തിയിരിക്കുന്നതിനേക്കാൾ നിലവിലുണ്ട്.
ഡിഫോൾട്ടായി VMS-ൽ, perl പുറത്തുകടന്നതിന് ശേഷവും %ENV ഹാഷിലേക്കുള്ള മാറ്റങ്ങൾ നിലനിൽക്കും. തുടർന്നുള്ള
അതേ പ്രക്രിയയിൽ perl-ന്റെ ക്ഷണങ്ങൾ അശ്രദ്ധമായി പരിസ്ഥിതി ക്രമീകരണങ്ങൾ അവകാശമാക്കാം
അത് താത്കാലികമായി ഉദ്ദേശിച്ചിരുന്നു.
ഒന്നിനും സിഗ്നലുകളെയോ %SIG-നെയോ കണക്കാക്കരുത്.
ഫയലിന്റെ പേര് ഗ്ലോബിംഗിൽ കണക്കാക്കരുത്. പകരം "opendir", "readdir", "closedir" എന്നിവ ഉപയോഗിക്കുക.
ഓരോ പ്രോഗ്രാമിനും എൻവയോൺമെന്റ് വേരിയബിളുകൾ അല്ലെങ്കിൽ ഓരോ പ്രോഗ്രാമിനും നിലവിലെ ഡയറക്ടറികൾ കണക്കാക്കരുത്.
$! ന്റെ നിർദ്ദിഷ്ട മൂല്യങ്ങൾ കണക്കാക്കരുത്, സംഖ്യകളോ പ്രത്യേകിച്ച് സ്ട്രിംഗ് മൂല്യങ്ങളോ അല്ല.
ഉപയോക്താക്കൾക്ക് പിശക് സന്ദേശങ്ങൾ അവരുടെ ഭാഷയിലേക്ക് വിവർത്തനം ചെയ്യപ്പെടുന്നതിന് കാരണമായി അവരുടെ ഭാഷകൾ മാറിയേക്കാം
ഭാഷകൾ. നിങ്ങൾക്ക് ഒരു POSIXish പരിതസ്ഥിതിയിൽ വിശ്വസിക്കാൻ കഴിയുമെങ്കിൽ, നിങ്ങൾക്ക് പോർട്ടബിൾ ആയി ചിഹ്നങ്ങൾ ഉപയോഗിക്കാം
"ENOENT" പോലെയുള്ള "Errno" മൊഡ്യൂൾ നിർവചിച്ചിരിക്കുന്നത്. $ ന്റെ മൂല്യങ്ങളിൽ വിശ്വസിക്കരുത്! എല്ലാം
സിസ്റ്റം കോൾ പരാജയപ്പെട്ടതിന് തൊട്ടുപിന്നാലെ ഒഴികെ.
കമാൻഡ് പേരുകൾ എതിരായി ഫയല് പാതനാമങ്ങൾ
"സിസ്റ്റം" അല്ലെങ്കിൽ "എക്സെക്" ഉള്ള ഒരു കമാൻഡോ പ്രോഗ്രാമോ അഭ്യർത്ഥിക്കാൻ ഉപയോഗിക്കുന്ന പേരിന് കഴിയും എന്ന് കരുതരുത്
അതിനായി എക്സിക്യൂട്ടബിൾ കോഡ് കൈവശം വച്ചിരിക്കുന്ന ഫയലിന്റെ നിലനിൽപ്പിനായി പരിശോധിക്കാനും ഉപയോഗിക്കുന്നു
കമാൻഡ് അല്ലെങ്കിൽ പ്രോഗ്രാം. ആദ്യം, പല സിസ്റ്റങ്ങളിലും അന്തർനിർമ്മിത കമാൻഡുകൾ ഉണ്ട്
ഷെൽ അല്ലെങ്കിൽ ഒഎസ്, ഈ കമാൻഡുകൾ അഭ്യർത്ഥിക്കാൻ കഴിയുമെങ്കിലും, അനുബന്ധ ഫയലൊന്നും ഇല്ല.
രണ്ടാമതായി, ചില ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾക്ക് (ഉദാ, Cygwin, DJGPP, OS/2, VOS) പ്രത്യയങ്ങൾ ആവശ്യമാണ്
എക്സിക്യൂട്ടബിൾ ഫയലുകൾക്കായി; ഈ പ്രത്യയങ്ങൾ സാധാരണയായി കമാൻഡ് നാമത്തിൽ അനുവദനീയമാണ്, പക്ഷേ അവയാണ്
ആവശ്യമില്ല. അങ്ങനെ, ഒരു കമാൻഡ് "പേൾ" എന്ന പേരിലുള്ള ഫയലിൽ നിലവിലുണ്ടാകാം "പേൾ", "perl.exe",
or "perl.pm", ഓപ്പറേറ്റിംഗ് സിസ്റ്റം അനുസരിച്ച്. "കോൺഫിഗിൽ" വേരിയബിൾ "_exe"
എന്തെങ്കിലും ഉണ്ടെങ്കിൽ, മൊഡ്യൂളിൽ എക്സിക്യൂട്ടബിൾ സഫിക്സ് ഉണ്ട്. മൂന്നാമതായി, VMS പോർട്ട് ശ്രദ്ധാപൂർവ്വം $^X സജ്ജീകരിക്കുന്നു ഒപ്പം
$Config{perlpath} അതിനാൽ കൂടുതൽ പ്രോസസ്സിംഗ് ആവശ്യമില്ല. ഇതും അതുപോലെ തന്നെ,
കാരണം ചുവടെ ഉപയോഗിച്ചിരിക്കുന്ന പൊരുത്തപ്പെടുന്ന പതിവ് പദപ്രയോഗം സാധ്യമായ ഒരു കാര്യത്തെ കൈകാര്യം ചെയ്യേണ്ടിവരും
VMS ഫയൽ നാമത്തിൽ പതിപ്പ് നമ്പർ പിന്തുടരുന്നു.
വിവിധ ആവശ്യകതകൾ കണക്കിലെടുത്ത് $^X ഒരു ഫയൽ പാത്ത് നെയിമിലേക്ക് പരിവർത്തനം ചെയ്യാൻ
ഓപ്പറേറ്റിംഗ് സിസ്റ്റം സാധ്യതകൾ, പറയുക:
കോൺഫിഗറേഷൻ ഉപയോഗിക്കുക;
എന്റെ $thisperl = $^X;
എങ്കിൽ ($^O അല്ല 'VMS')
{$thisperl .= $Config{_exe} $thisperl =~ m/$Config{_exe}$/i;}
$Config{perlpath} ഒരു ഫയൽ പാത്ത് നെയിമിലേക്ക് പരിവർത്തനം ചെയ്യാൻ, പറയുക:
കോൺഫിഗറേഷൻ ഉപയോഗിക്കുക;
എന്റെ $thisperl = $Config{perlpath};
എങ്കിൽ ($^O അല്ല 'VMS')
{$thisperl .= $Config{_exe} $thisperl =~ m/$Config{_exe}$/i;}
നെറ്റ്വർക്കിങ്
നിങ്ങൾക്ക് പൊതു ഇന്റർനെറ്റിൽ എത്താൻ കഴിയുമെന്ന് കരുതരുത്.
പബ്ലിക് ഇൻറർനെറ്റിലേക്ക് ഫയർവാളുകൾ വഴി എത്താൻ ഒരേയൊരു മാർഗ്ഗമേയുള്ളൂവെന്ന് കരുതരുത്.
80 അല്ലാതെ മറ്റേതെങ്കിലും പോർട്ട് വഴിയോ അല്ലെങ്കിൽ ഏതെങ്കിലും വെബ് വഴിയോ നിങ്ങൾക്ക് പുറംലോകത്തെത്താൻ കഴിയുമെന്ന് കരുതരുത്
പ്രോക്സി. ftp നിരവധി ഫയർവാളുകൾ തടഞ്ഞു.
പ്രാദേശിക SMTP പോർട്ടിലേക്ക് കണക്റ്റ് ചെയ്ത് നിങ്ങൾക്ക് ഇമെയിൽ അയയ്ക്കാൻ കഴിയുമെന്ന് കരുതരുത്.
'ലോക്കൽ ഹോസ്റ്റ്' എന്ന പേരിൽ നിങ്ങൾക്ക് നിങ്ങളിലേക്കോ ഏതെങ്കിലും നോഡിലേക്കോ എത്തിച്ചേരാനാകുമെന്ന് കരുതരുത്. അതുതന്നെ
'127.0.0.1' എന്നതിലേക്ക് പോകുന്നു. നിങ്ങൾ രണ്ടും പരീക്ഷിക്കേണ്ടിവരും.
ഹോസ്റ്റിന് ഒരു നെറ്റ്വർക്ക് കാർഡ് മാത്രമേയുള്ളൂ, അല്ലെങ്കിൽ അതിന് പലതുമായി ബന്ധിപ്പിക്കാൻ കഴിയില്ലെന്ന് കരുതരുത്
വെർച്വൽ IP വിലാസങ്ങൾ.
ഒരു പ്രത്യേക നെറ്റ്വർക്ക് ഉപകരണത്തിന്റെ പേര് ഊഹിക്കരുത്.
ഒരു പ്രത്യേക സെറ്റ് "ioctl()"കൾ പ്രവർത്തിക്കുമെന്ന് കരുതരുത്.
നിങ്ങൾക്ക് ഹോസ്റ്റുകളെ പിംഗ് ചെയ്യാനും മറുപടികൾ നേടാനും കഴിയുമെന്ന് കരുതരുത്.
ഏതെങ്കിലും പ്രത്യേക പോർട്ട് (സേവനം) പ്രതികരിക്കുമെന്ന് കരുതരുത്.
"Sys::Hostname" (അല്ലെങ്കിൽ മറ്റേതെങ്കിലും API അല്ലെങ്കിൽ കമാൻഡ്) പൂർണ്ണമായി നൽകുമെന്ന് കരുതരുത്
യോഗ്യതയുള്ള ഹോസ്റ്റ്നാമം അല്ലെങ്കിൽ യോഗ്യതയില്ലാത്ത ഹോസ്റ്റ് നാമം: ഇതെല്ലാം സിസ്റ്റം എങ്ങനെയായിരുന്നു എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു
ക്രമീകരിച്ചത്. DHCP, NAT എന്നിവ പോലുള്ള കാര്യങ്ങൾക്ക്, നിങ്ങൾക്ക് തിരികെ ലഭിക്കുന്ന ഹോസ്റ്റ് നാമം ഓർക്കുക
വളരെ ഉപകാരപ്രദമായിരിക്കില്ല.
മുകളിൽ പറഞ്ഞിരിക്കുന്ന എല്ലാ "ചെയ്യരുത്":കൾ ഭയപ്പെടുത്തുന്നതായി തോന്നാം, അവയാണ്, പക്ഷേ താക്കോൽ തരംതാഴ്ത്തുക എന്നതാണ്
ഒരാൾക്ക് ആവശ്യമുള്ള പ്രത്യേക നെറ്റ്വർക്ക് സേവനത്തിൽ എത്തിച്ചേരാൻ കഴിയുന്നില്ലെങ്കിൽ മനോഹരമായി. ക്രോക്കിംഗ് അല്ലെങ്കിൽ
തൂക്കിയിടുന്നത് വളരെ പ്രൊഫഷണലായി തോന്നുന്നില്ല.
ഇന്റർപ്രോസസ് വാര്ത്താവിനിമയം (ഐ.പി.സി.)
പൊതുവേ, പോർട്ടബിൾ ആയിരിക്കാൻ ഉദ്ദേശിച്ചുള്ള കോഡിൽ സിസ്റ്റം നേരിട്ട് ആക്സസ് ചെയ്യരുത്. അതിനർത്ഥം, ഇല്ല
"സിസ്റ്റം", "എക്സിക്", "ഫോർക്ക്", "പൈപ്പ്", "``", "qx//", "ഓപ്പൺ" ഒരു "|" അല്ലെങ്കിൽ മറ്റേതെങ്കിലും
ഒരു പേൾ ഹാക്കർ ആകുന്നത് മൂല്യവത്താക്കി മാറ്റുന്ന കാര്യങ്ങൾ.
ബാഹ്യ പ്രക്രിയകൾ സമാരംഭിക്കുന്ന കമാൻഡുകൾ സാധാരണയായി മിക്ക പ്ലാറ്റ്ഫോമുകളിലും പിന്തുണയ്ക്കുന്നു (എന്നിരുന്നാലും
അവയിൽ പലതും ഏതെങ്കിലും തരത്തിലുള്ള ഫോർക്കിംഗിനെ പിന്തുണയ്ക്കുന്നില്ല). അവ ഉപയോഗിക്കുന്നതിൽ പ്രശ്നം ഉയർന്നുവരുന്നു
നിങ്ങൾ അവരെ എന്തിനുവേണ്ടിയാണ് വിളിക്കുന്നത്. ബാഹ്യ ഉപകരണങ്ങൾ പലപ്പോഴും വ്യത്യസ്തമായി വ്യത്യസ്തമായി പേരുനൽകുന്നു
പ്ലാറ്റ്ഫോമുകൾ, ഒരേ സ്ഥലത്ത് ലഭ്യമായേക്കില്ല, വ്യത്യസ്ത വാദങ്ങൾ അംഗീകരിച്ചേക്കാം,
വ്യത്യസ്തമായി പെരുമാറാനും പലപ്പോഴും അവരുടെ ഫലങ്ങൾ പ്ലാറ്റ്ഫോമിനെ ആശ്രയിച്ചുള്ള രീതിയിൽ അവതരിപ്പിക്കാനും കഴിയും.
അതിനാൽ, സ്ഥിരമായ ഫലങ്ങൾ ലഭിക്കുന്നതിന് നിങ്ങൾ അപൂർവ്വമായി അവരെ ആശ്രയിക്കണം. (പിന്നെ വീണ്ടും, എങ്കിൽ
നിങ്ങൾ വിളിക്കുന്നു netstat -a, Unix-ലും CP/M-ലും ഇത് പ്രവർത്തിക്കുമെന്ന് നിങ്ങൾ പ്രതീക്ഷിക്കുന്നില്ല.)
പേൾ കോഡിന്റെ ഒരു സാധാരണ ബിറ്റ് ഒരു പൈപ്പ് തുറക്കുന്നതാണ് അയയ്ക്കുക:
തുറക്കുക(മെയിൽ, '|/usr/lib/sendmail -ടി')
അല്ലെങ്കിൽ മരിക്കുക "അയയ്ക്കേണ്ട മെയിൽ ഫോർക്ക് ചെയ്യാൻ കഴിയില്ല: $!";
സെൻഡ്മെയിൽ ലഭ്യമാണെന്ന് അറിയുമ്പോൾ സിസ്റ്റം പ്രോഗ്രാമിംഗിന് ഇത് നല്ലതാണ്. പക്ഷെ ഇത്
പല Unix ഇതര സിസ്റ്റങ്ങൾക്കും സെൻഡ്മെയിൽ ഇല്ലാത്ത ചില Unix സിസ്റ്റങ്ങൾക്കും പിഴയില്ല
ഇൻസ്റ്റാൾ ചെയ്തു. ഒരു പോർട്ടബിൾ പരിഹാരം ആവശ്യമാണെങ്കിൽ, CPAN-ലെ വിവിധ വിതരണങ്ങൾ കാണുക
അതു കൈകാര്യം ചെയ്യുക. "MailTools" വിതരണത്തിലെ "Mail::Mailer", "Mail::Send" എന്നിവ
സാധാരണയായി ഉപയോഗിക്കുന്ന, കൂടാതെ "മെയിൽ", "സെൻഡ്മെയിൽ", കൂടാതെ നിരവധി മെയിലിംഗ് രീതികൾ നൽകുകയും ചെയ്യുന്നു
ഒരു മെയിൽ ട്രാൻസ്ഫർ ഏജന്റ് ലഭ്യമല്ലെങ്കിൽ നേരിട്ട് SMTP ("Net::SMTP" വഴി). "മെയിൽ::സെൻഡ്മെയിൽ"
ലളിതവും പ്ലാറ്റ്ഫോം-സ്വതന്ത്രവുമായ മെയിലിംഗ് നൽകുന്ന ഒരു ഒറ്റപ്പെട്ട മൊഡ്യൂളാണ്.
Unix സിസ്റ്റം V IPC ("msg*(), sem*(), shm*()") എല്ലാ Unix-ലും ലഭ്യമല്ല
പ്ലാറ്റ്ഫോമുകൾ.
"പാക്ക്("N", 10, 20, 30, 40)" എന്നതിന്റെ കേവല ഫലം അല്ലെങ്കിൽ ബെയർ വി-സ്ട്രിംഗുകൾ (അത്തരം
IPv10.20.30.40 വിലാസങ്ങളെ പ്രതിനിധീകരിക്കുന്നതിന് "v4") ആയി: രണ്ട് ഫോമുകളും നാല് ബൈറ്റുകൾ പാക്ക് ചെയ്യുക
നെറ്റ്വർക്ക് ഓർഡർ. ഇത് C ഭാഷയായ "in_addr" struct-ന് തുല്യമായിരിക്കും (അതാണ്
സോക്കറ്റ് കോഡ് ആന്തരികമായി ഉപയോഗിക്കുന്നു) ഉറപ്പില്ല. പോർട്ടബിൾ ആകുന്നതിന്, ദിനചര്യകൾ ഉപയോഗിക്കുക
"inet_aton()", "inet_ntoa()", "sockaddr_in()" തുടങ്ങിയ "സോക്കറ്റ്" വിപുലീകരണം.
പോർട്ടബിൾ കോഡിനുള്ള പ്രധാന നിയമം ഇതാണ്: എല്ലാം പോർട്ടബിൾ പേളിൽ ചെയ്യുക, അല്ലെങ്കിൽ ഒരു മൊഡ്യൂൾ ഉപയോഗിക്കുക (അത്
പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ട കോഡ് ഉപയോഗിച്ച് ഇത് ആന്തരികമായി നടപ്പിലാക്കിയേക്കാം, പക്ഷേ ഒരു പൊതു ഇന്റർഫേസ് തുറന്നുകാട്ടുന്നു).
ബാഹ്യ സബ്റൂട്ടീനുകൾ (XS)
XS കോഡ് സാധാരണയായി ഏത് പ്ലാറ്റ്ഫോമിലും പ്രവർത്തിക്കാൻ കഴിയും, എന്നാൽ ആശ്രിത ലൈബ്രറികൾ, തലക്കെട്ട്
ഫയലുകൾ മുതലായവ, എളുപ്പത്തിൽ ലഭ്യമല്ല അല്ലെങ്കിൽ പോർട്ടബിൾ ആയിരിക്കില്ല, അല്ലെങ്കിൽ XS കോഡ് തന്നെ ആയിരിക്കാം
പേൾ കോഡ് പോലെ തന്നെ പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ടം. ലൈബ്രറികളും തലക്കെട്ടുകളും പോർട്ടബിൾ ആണെങ്കിൽ,
XS കോഡും പോർട്ടബിൾ ആണെന്ന് ഉറപ്പാക്കുന്നത് സാധാരണയായി ന്യായമാണ്.
XS കോഡ് എഴുതുമ്പോൾ മറ്റൊരു തരത്തിലുള്ള പോർട്ടബിലിറ്റി പ്രശ്നം ഉണ്ടാകുന്നു: ഒരു സിയുടെ ലഭ്യത
അന്തിമ ഉപയോക്താവിന്റെ സിസ്റ്റത്തിലെ കമ്പൈലർ. സി അതിന്റെ സ്വന്തം പോർട്ടബിലിറ്റി പ്രശ്നങ്ങൾ കൊണ്ടുവരുന്നു, ഒപ്പം
XS കോഡ് എഴുതുന്നത് അവയിൽ ചിലത് നിങ്ങളെ തുറന്നുകാട്ടും. പൂർണ്ണമായി പേളിൽ എഴുതുന്നത് എളുപ്പമുള്ള മാർഗമാണ്
പോർട്ടബിലിറ്റി കൈവരിക്കാൻ.
സ്റ്റാൻഡേർഡ് മൊഡ്യൂളുകൾ
പൊതുവേ, സ്റ്റാൻഡേർഡ് മൊഡ്യൂളുകൾ പ്ലാറ്റ്ഫോമുകളിലുടനീളം പ്രവർത്തിക്കുന്നു. ശ്രദ്ധേയമായ ഒഴിവാക്കലുകൾ "CPAN" ആണ്
മൊഡ്യൂൾ (ഇത് നിലവിൽ ലഭ്യമല്ലാത്ത ബാഹ്യ പ്രോഗ്രാമുകളിലേക്ക് കണക്ഷനുകൾ ഉണ്ടാക്കുന്നു)
പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ട മൊഡ്യൂളുകളും ("ExtUtils::MM_VMS" പോലെ), DBM മൊഡ്യൂളുകളും.
എല്ലാ പ്ലാറ്റ്ഫോമുകളിലും ഒരു DBM മൊഡ്യൂൾ ലഭ്യമല്ല. "SDBM_File" ഉം മറ്റുള്ളവയുമാണ്
പൊതുവെ എല്ലാ Unix, DOSish പോർട്ടുകളിലും ലഭ്യമാണ്, എന്നാൽ MacPerl-ൽ അല്ല, അവിടെ മാത്രം
"NDBM_File", "DB_File" എന്നിവ ലഭ്യമാണ്.
നല്ല വാർത്ത എന്തെന്നാൽ, കുറഞ്ഞത് ചില DBM മൊഡ്യൂളെങ്കിലും ലഭ്യമായിരിക്കണം, കൂടാതെ "AnyDBM_File" ലഭ്യമാകും.
അത് കണ്ടെത്താൻ കഴിയുന്ന ഏത് മൊഡ്യൂൾ ഉപയോഗിക്കുക. തീർച്ചയായും, കോഡ് വളരെ കർശനമായിരിക്കണം,
ഏറ്റവും വലിയ പൊതു ഘടകത്തിലേക്ക് (ഉദാ, ഓരോ റെക്കോർഡിനും 1K കവിയരുത്), അങ്ങനെ
ഏത് DBM മൊഡ്യൂളിലും ഇത് പ്രവർത്തിക്കും. കൂടുതൽ വിവരങ്ങൾക്ക് AnyDBM_File കാണുക.
കാലം ഒപ്പം തീയതി
ദിവസത്തിന്റെ സമയവും കലണ്ടർ തീയതിയും സംബന്ധിച്ച സിസ്റ്റത്തിന്റെ സങ്കൽപ്പം വളരെ വ്യത്യസ്തമായ രീതിയിലാണ് നിയന്ത്രിക്കുന്നത്
വഴികൾ. സമയമേഖല $ENV{TZ}-ൽ സംഭരിച്ചിട്ടുണ്ടെന്ന് കരുതരുത്, അത് അങ്ങനെയാണെങ്കിൽപ്പോലും, ഊഹിക്കരുത്
ആ വേരിയബിളിലൂടെ നിങ്ങൾക്ക് സമയമേഖല നിയന്ത്രിക്കാൻ കഴിയും. എന്നതിനെക്കുറിച്ച് ഒന്നും ഊഹിക്കരുത്
മൂന്നക്ഷര സമയമേഖലയുടെ ചുരുക്കെഴുത്തുകൾ (ഉദാഹരണത്തിന് MST മൗണ്ടൻ സ്റ്റാൻഡേർഡ് ആയിരിക്കും
സമയം, ഇത് മോസ്കോ സ്റ്റാൻഡേർഡ് സമയത്തിന് വേണ്ടി നിൽക്കുന്നതായി അറിയപ്പെടുന്നു). നിങ്ങൾക്ക് സമയമേഖലകൾ ഉപയോഗിക്കണമെങ്കിൽ,
യുടിസിയിൽ നിന്ന് ഓഫ്സെറ്റ് മിനിറ്റുകളുടെ കൃത്യമായ എണ്ണം പോലെയുള്ള ചില വ്യക്തമായ ഫോർമാറ്റിൽ അവ പ്രകടിപ്പിക്കുക,
അല്ലെങ്കിൽ POSIX സമയമേഖല ഫോർമാറ്റ്.
00 ജനുവരി 00 ന് 00:1:1970 ന് യുഗം ആരംഭിക്കുമെന്ന് കരുതരുത്, കാരണം അത് OS ആണ്- കൂടാതെ
നടപ്പിലാക്കൽ-നിർദ്ദിഷ്ട. ഒരു വ്യക്തതയില്ലാത്ത പ്രാതിനിധ്യത്തിൽ ഒരു തീയതി സൂക്ഷിക്കുന്നതാണ് നല്ലത്.
ISO 8601 സ്റ്റാൻഡേർഡ് YYYY-MM-DD യെ തീയതി ഫോർമാറ്റായി നിർവചിക്കുന്നു, അല്ലെങ്കിൽ YYYY-MM-DDTHH:MM:SS
(അത് സമയത്തിൽ നിന്ന് തീയതി വേർതിരിക്കുന്ന അക്ഷരാർത്ഥത്തിൽ "T" ആണ്). ദയവായി ISO 8601 ഉപയോഗിക്കുക
02/03/04 എന്തായിരിക്കുമെന്ന് ഊഹിക്കുന്നതിന് പകരം. ഐഎസ്ഒ 8601-യെപ്പോലും നന്നായി അടുക്കുന്നു.
ഒരു ടെക്സ്റ്റ് പ്രാതിനിധ്യം ("1987-12-18" പോലെ) ഒരു OS-നിർദ്ദിഷ്ടതയിലേക്ക് എളുപ്പത്തിൽ പരിവർത്തനം ചെയ്യാനാകും
"Date::Parse" പോലെയുള്ള ഒരു മൊഡ്യൂൾ ഉപയോഗിക്കുന്ന മൂല്യം. തിരികെ നൽകിയത് പോലെയുള്ള മൂല്യങ്ങളുടെ ഒരു നിര
"localtime", "Time::Local" ഉപയോഗിച്ച് OS-നിർദ്ദിഷ്ട പ്രാതിനിധ്യത്തിലേക്ക് പരിവർത്തനം ചെയ്യാവുന്നതാണ്.
സമയത്തിലോ തീയതി മൊഡ്യൂളുകളിലോ ഉള്ള പരിശോധനകൾ പോലെയുള്ള നിർദ്ദിഷ്ട സമയങ്ങൾ കണക്കാക്കുമ്പോൾ, അത് ആയിരിക്കാം
യുഗത്തിനായുള്ള ഒരു ഓഫ്സെറ്റ് കണക്കാക്കാൻ അനുയോജ്യം.
സമയം ആവശ്യമാണ് ::പ്രാദേശികം;
എന്റെ $ ഓഫ്സെറ്റ് = സമയം:: ലോക്കൽ:: ടൈംജിഎം(0, 0, 0, 1, 0, 70);
Unix-ൽ $offset-ന്റെ മൂല്യം 0 ആയിരിക്കും, എന്നാൽ Mac OS Classic-ൽ ചില വലിയ സംഖ്യകളായിരിക്കും.
ശരിയായ മൂല്യം എന്തായിരിക്കണം എന്നറിയാൻ $offset പിന്നീട് ഒരു Unix സമയ മൂല്യത്തിലേക്ക് ചേർക്കാവുന്നതാണ്
ഏതെങ്കിലും സംവിധാനം.
കഥാപാത്രം സെറ്റുകൾ ഒപ്പം പ്രതീകം എൻകോഡിംഗ്
ക്യാരക്ടർ സെറ്റുകളെ കുറിച്ച് വളരെ കുറച്ച് മാത്രം ഊഹിക്കുക.
പ്രതീകങ്ങളുടെ സംഖ്യാ മൂല്യങ്ങളെക്കുറിച്ച് ("ord", "chr") ഒന്നും കരുതരുത്. വ്യക്തമായത് ഉപയോഗിക്കരുത്
കോഡ് പോയിന്റ് ശ്രേണികൾ ("\xHH-\xHH പോലെ)". എന്നിരുന്നാലും, Perl v5.22-ൽ ആരംഭിക്കുന്നു, പതിവ് എക്സ്പ്രഷൻ
"qr/[\N{U+HH}-\N{U+HH}]/" പോലെ വ്യക്തമാക്കിയ പാറ്റേൺ ബ്രാക്കറ്റഡ് പ്രതീക ക്ലാസ് ശ്രേണികൾ
പോർട്ടബിൾ. നിങ്ങൾക്ക് "[:print:]" പോലുള്ള പ്രതീകാത്മക പ്രതീക ക്ലാസുകൾ പോർട്ടബിൾ ആയി ഉപയോഗിക്കാം.
അക്ഷരമാല അക്ഷരങ്ങൾ തുടർച്ചയായി എൻകോഡ് ചെയ്തിട്ടുണ്ടെന്ന് കരുതരുത് (സംഖ്യയിൽ
ബോധം). വിടവുകൾ ഉണ്ടാകാം. എന്നിരുന്നാലും, പേളിലെ പ്രത്യേക കോഡിംഗ്, എല്ലാ ഉപസെറ്റുകൾക്കും ഉറപ്പ് നൽകുന്നു
"qr/[AZ]/", "qr/[az]/", "qr/[0-9]/" എന്നിവ പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നു. "tr///" സമാന രീതിയിൽ പ്രവർത്തിക്കുന്നു
ഈ ശ്രേണികൾക്കായി. പാറ്റേണുകളിൽ, "\N{...}" ഉപയോഗിച്ച് അവസാന പോയിന്റുകൾ ഉപയോഗിച്ച് വ്യക്തമാക്കിയ ഏതെങ്കിലും ശ്രേണികൾ
നൊട്ടേഷനുകൾ ക്യാരക്ടർ സെറ്റ് പോർട്ടബിലിറ്റി ഉറപ്പാക്കുന്നു, പക്ഷേ ഇത് Perl v5.22 ലെ ഒരു ബഗ് ആണ്
"tr///" എന്നതിൽ ശരിയല്ല.
കഥാപാത്രങ്ങളുടെ ക്രമത്തെക്കുറിച്ച് ഒന്നും ഊഹിക്കരുത്. ചെറിയ അക്ഷരങ്ങൾ ആകാം
വലിയക്ഷരങ്ങൾക്ക് മുമ്പോ ശേഷമോ വരിക; ചെറിയക്ഷരവും വലിയക്ഷരവും പരസ്പരം ബന്ധിപ്പിച്ചിരിക്കാം
അങ്ങനെ "a" ഉം "A" ഉം "b" ന് മുമ്പായി വരുന്നു; ഉച്ചാരണവും മറ്റ് അന്താരാഷ്ട്ര കഥാപാത്രങ്ങളും
"b" ന് മുമ്പായി ae വരുന്ന തരത്തിൽ പരസ്പരം ബന്ധിപ്പിച്ചേക്കാം. യൂണികോഡ്::ഇത് അടുക്കാൻ കൊളേറ്റ് ഉപയോഗിക്കാം
എല്ലാം പുറത്ത്.
അന്താരാഷ്ട്രവൽക്കരണം
നിങ്ങൾ POSIX അനുമാനിക്കുകയാണെങ്കിൽ (ഒരു വലിയ അനുമാനം), നിങ്ങൾക്ക് POSIX നെ കുറിച്ച് കൂടുതൽ വായിക്കാം
പെർലോക്കേലിൽ നിന്നുള്ള പ്രാദേശിക സംവിധാനം. പ്രാദേശിക സംവിധാനം കുറഞ്ഞത് കാര്യങ്ങൾ ഉണ്ടാക്കാൻ ശ്രമിക്കുന്നു a
അൽപ്പം കൂടുതൽ പോർട്ടബിൾ, അല്ലെങ്കിൽ ഇംഗ്ലീഷ് അല്ലാത്തവർക്ക് കൂടുതൽ സൗകര്യപ്രദവും പ്രാദേശിക സൗഹൃദവുമാണ്
ഉപയോക്താക്കൾ. സിസ്റ്റം പ്രതീക സെറ്റുകളും എൻകോഡിംഗും തീയതിയും സമയവും ബാധിക്കുന്നു
ഫോർമാറ്റിംഗ് - മറ്റ് കാര്യങ്ങൾക്കൊപ്പം.
നിങ്ങൾക്ക് അന്തർദ്ദേശീയമാകാൻ താൽപ്പര്യമുണ്ടെങ്കിൽ, നിങ്ങൾ യൂണികോഡ് പരിഗണിക്കണം. perluniintro കാണുക ഒപ്പം
കൂടുതൽ വിവരങ്ങൾക്ക് perlunicode.
"സോഴ്സ് കോഡിൽ" നിങ്ങൾക്ക് ASCII അല്ലാത്ത ബൈറ്റുകൾ ഉപയോഗിക്കണമെങ്കിൽ (ബൈറ്റുകൾ 0x00..0x7f)
നിങ്ങളുടെ കോഡ്, പോർട്ടബിൾ ആയിരിക്കണമെങ്കിൽ അവ ഏതൊക്കെ ബൈറ്റുകൾ ആണെന്ന് നിങ്ങൾ വ്യക്തമായി പറയേണ്ടതുണ്ട്. ആരോ
ഉദാഹരണത്തിന്, ഒരു UTF-8 ലൊക്കേലിന് കീഴിൽ നിങ്ങളുടെ കോഡ് ഉപയോഗിക്കുന്നുണ്ടാകാം, ഈ സാഹചര്യത്തിൽ റാൻഡം നേറ്റീവ്
ബൈറ്റുകൾ നിയമവിരുദ്ധമായിരിക്കാം ("വികലമായ UTF-8 ...") ഇതിനർത്ഥം ഉദാഹരണത്തിന് ISO ഉൾച്ചേർക്കൽ എന്നാണ്
8859-1 ബൈറ്റുകൾ 0x7f ന് അപ്പുറം നിങ്ങളുടെ സ്ട്രിംഗുകളിലേക്ക് പിന്നീട് പ്രശ്നമുണ്ടാക്കിയേക്കാം. ബൈറ്റുകൾ ആണെങ്കിൽ
നേറ്റീവ് 8-ബിറ്റ് ബൈറ്റുകൾ, നിങ്ങൾക്ക് "ബൈറ്റുകൾ" പ്രാഗ്മ ഉപയോഗിക്കാം. ബൈറ്റുകൾ ഒരു സ്ട്രിംഗിലാണെങ്കിൽ (പതിവ്
പദപ്രയോഗങ്ങൾ കൗതുകകരമായ സ്ട്രിംഗുകളാണ്), നിങ്ങൾക്ക് പലപ്പോഴും "\xHH" അല്ലെങ്കിൽ കൂടുതൽ പോർട്ടബിൾ ആയി ഉപയോഗിക്കാം,
ബൈറ്റുകൾ അതേപടി ഉൾപ്പെടുത്തുന്നതിന് പകരം "\N{U+HH}" നൊട്ടേഷനുകൾ. നിങ്ങൾക്ക് എഴുതണമെങ്കിൽ നിങ്ങളുടെ
UTF-8-ലെ കോഡ്, നിങ്ങൾക്ക് utf8 ഉപയോഗിക്കാം.
സിസ്റ്റം ഉറവിടങ്ങൾ
നിങ്ങളുടെ കോഡ് കടുത്ത നിയന്ത്രണമുള്ള (അല്ലെങ്കിൽ നഷ്ടമായ!) വെർച്വൽ ഉള്ള സിസ്റ്റങ്ങൾക്ക് വേണ്ടിയുള്ളതാണെങ്കിൽ
നിങ്ങൾ ആകാൻ ആഗ്രഹിക്കുന്ന മെമ്മറി സിസ്റ്റങ്ങൾ വിശേഷാല് അത്തരം പാഴ് നിർമ്മിതികൾ ഒഴിവാക്കുന്നതിന് ശ്രദ്ധിക്കുക
as:
my @lines = <$very_large_file>; # മോശം
അതേസമയം (<$fh>) {$file .= $_} # ചിലപ്പോൾ മോശമാണ്
എന്റെ $file = join('', <$fh>); # നല്ലത്
അവസാനത്തെ രണ്ട് നിർമ്മിതികൾ മിക്ക ആളുകൾക്കും അവബോധജന്യമായി തോന്നാം. ആദ്യത്തേത് ആവർത്തിച്ച് വളരുന്നു
ഒരു സ്ട്രിംഗ്, രണ്ടാമത്തേത് ഒറ്റയടിക്ക് മെമ്മറിയുടെ വലിയൊരു ഭാഗം അനുവദിക്കുന്നു. ചിലതിൽ
സിസ്റ്റങ്ങളിൽ, രണ്ടാമത്തേത് ആദ്യത്തേതിനേക്കാൾ കൂടുതൽ കാര്യക്ഷമമാണ്.
സുരക്ഷ
മിക്ക മൾട്ടി-ഉപയോക്തൃ പ്ലാറ്റ്ഫോമുകളും അടിസ്ഥാന തലത്തിലുള്ള സുരക്ഷ നൽകുന്നു, സാധാരണയായി നടപ്പിലാക്കുന്നത്
ഫയൽസിസ്റ്റം ലെവൽ. ചിലർ, നിർഭാഗ്യവശാൽ അങ്ങനെ ചെയ്യുന്നില്ല. അങ്ങനെ യൂസർ ഐഡി എന്ന ആശയം, അല്ലെങ്കിൽ
"ഹോം" ഡയറക്ടറി അല്ലെങ്കിൽ ലോഗിൻ ചെയ്തിരിക്കുന്ന അവസ്ഥ പോലും പലരിലും തിരിച്ചറിയാൻ കഴിയില്ല.
പ്ലാറ്റ്ഫോമുകൾ. നിങ്ങൾ സുരക്ഷാ ബോധമുള്ള പ്രോഗ്രാമുകൾ എഴുതുകയാണെങ്കിൽ, സാധാരണയായി അറിയുന്നതാണ് നല്ലത്
ഏത് തരത്തിലുള്ള സിസ്റ്റത്തിന്റെ കീഴിലാണ് നിങ്ങൾ പ്രവർത്തിക്കുന്നത്, അതിനാൽ നിങ്ങൾക്ക് കോഡ് വ്യക്തമായി എഴുതാനാകും
ആ പ്ലാറ്റ്ഫോം (അല്ലെങ്കിൽ പ്ലാറ്റ്ഫോമുകളുടെ ക്ലാസ്).
യുണിക്സ് ഫയൽസിസ്റ്റം ആക്സസ് സെമാന്റിക്സ്: ഓപ്പറേറ്റിംഗ് സിസ്റ്റം അല്ലെങ്കിൽ ഫയൽസിസ്റ്റം അനുമാനിക്കരുത്
സാധാരണ "rwx" എന്നതിനേക്കാൾ സമ്പന്നമായ ചില ACL സിസ്റ്റങ്ങൾ ഉപയോഗിക്കുന്നുണ്ടാകാം. എന്നിരുന്നാലും
"rwx" നിലവിലുണ്ട്, അവയുടെ അർത്ഥശാസ്ത്രം വ്യത്യസ്തമായിരിക്കാം.
(സുരക്ഷാ വീക്ഷണകോണിൽ നിന്ന്, എന്തെങ്കിലും ചെയ്യാൻ ശ്രമിക്കുന്നതിന് മുമ്പ് അനുമതികൾക്കായി പരിശോധിക്കുന്നത്
എന്തായാലും വിഡ്ഢിത്തം: ഒരാൾ ഇത് ശ്രമിച്ചാൽ, റേസ് സാഹചര്യങ്ങൾക്ക് സാധ്യതയുണ്ട്. ആരെങ്കിലും അല്ലെങ്കിൽ
അനുമതികൾ പരിശോധിക്കുന്നതിനും യഥാർത്ഥത്തിനും ഇടയിലുള്ള അനുമതികൾ എന്തെങ്കിലും മാറ്റം വരുത്തിയേക്കാം
ഓപ്പറേഷൻ. ഓപ്പറേഷൻ പരീക്ഷിച്ചുനോക്കൂ.)
Unix ഉപയോക്താവും ഗ്രൂപ്പ് സെമാന്റിക്സും അനുമാനിക്കരുത്: പ്രത്യേകിച്ച്, $<, $> (അല്ലെങ്കിൽ $() എന്നിവ പ്രതീക്ഷിക്കരുത്
കൂടാതെ $)) ഐഡന്റിറ്റികൾ (അല്ലെങ്കിൽ അംഗത്വങ്ങൾ) മാറുന്നതിനായി പ്രവർത്തിക്കുക.
സെറ്റ്-യുഐഡി, സെറ്റ്-ജിഡ് സെമാന്റിക്സ് എന്നിവ അനുമാനിക്കരുത്. (നിങ്ങൾ അങ്ങനെ ചെയ്താലും, രണ്ടുതവണ ചിന്തിക്കുക: set-uid ഒപ്പം
സെറ്റ്-ജിഡ് സെക്യൂരിറ്റി വേമുകളുടെ അറിയപ്പെടുന്ന ഒരു കാൻ ആണ്.)
ശൈലി
പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ട കോഡ് ആവശ്യമായി വരുമ്പോൾ, അത് സൂക്ഷിക്കുന്നത് പരിഗണിക്കുക
പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ട കോഡ് ഒരിടത്ത്, മറ്റ് പ്ലാറ്റ്ഫോമുകളിലേക്ക് പോർട്ടിംഗ് എളുപ്പമാക്കുന്നു. ഉപയോഗിക്കുക
"കോൺഫിഗ്" മൊഡ്യൂളും പ്ലാറ്റ്ഫോമുകളെ വേർതിരിക്കാൻ $^O എന്ന പ്രത്യേക വേരിയബിളും, വിവരിച്ചിരിക്കുന്നത് പോലെ
"പ്ലാറ്റ്ഫോമുകൾ".
നിങ്ങളുടെ മൊഡ്യൂൾ അല്ലെങ്കിൽ പ്രോഗ്രാമുകൾ ഉപയോഗിച്ച് നിങ്ങൾ നൽകുന്ന ടെസ്റ്റുകളിൽ ശ്രദ്ധാലുവായിരിക്കുക. മൊഡ്യൂൾ കോഡ് പൂർണ്ണമായും ആയിരിക്കാം
പോർട്ടബിൾ, പക്ഷേ അതിന്റെ പരിശോധനകൾ ആയിരിക്കില്ല. ടെസ്റ്റുകൾ മറ്റുള്ളവരിൽ നിന്ന് പുറത്തുവരുമ്പോൾ ഇത് പലപ്പോഴും സംഭവിക്കുന്നു
പരിശോധനയിൽ സഹായിക്കാൻ ബാഹ്യ പ്രോഗ്രാമുകളെ പ്രോസസ് ചെയ്യുക അല്ലെങ്കിൽ വിളിക്കുക, അല്ലെങ്കിൽ എപ്പോൾ (മുകളിൽ സൂചിപ്പിച്ചതുപോലെ).
ഫയൽസിസ്റ്റം, പാത്ത് എന്നിവയെ കുറിച്ചുള്ള ചില കാര്യങ്ങൾ ടെസ്റ്റുകൾ അനുമാനിക്കുന്നു. എയെ ആശ്രയിക്കാതിരിക്കാൻ ശ്രദ്ധിക്കുക
$ പരിശോധിക്കുമ്പോൾ പോലുള്ള പിശകുകൾക്കുള്ള നിർദ്ദിഷ്ട ഔട്ട്പുട്ട് ശൈലി! പരാജയപ്പെട്ട സിസ്റ്റം കോളിന് ശേഷം.
$ ഉപയോഗിക്കുന്നു! ഔട്ട്പുട്ടായി പ്രദർശിപ്പിക്കുകയല്ലാതെ മറ്റെന്തെങ്കിലും സംശയാസ്പദമാണ് (എന്നിരുന്നാലും
"Errno" മൊഡ്യൂൾ, പിശക് മൂല്യത്തിനായി ന്യായമായ രീതിയിൽ പരിശോധിക്കുന്നതിനുള്ള മൊഡ്യൂൾ). ചില പ്ലാറ്റ്ഫോമുകൾ പ്രതീക്ഷിക്കുന്നത് എ
ചില ഔട്ട്പുട്ട് ഫോർമാറ്റും ആ പ്ലാറ്റ്ഫോമുകളിലെ Perl അതിനനുസരിച്ച് ക്രമീകരിച്ചിട്ടുണ്ടാകാം.
ഏറ്റവും വ്യക്തമായി, ഒരു പിശക് മൂല്യം പരിശോധിക്കുമ്പോൾ ഒരു regex ആങ്കർ ചെയ്യരുത്.
CPAN പരീക്ഷകർ
CPAN-ലേക്ക് അപ്ലോഡ് ചെയ്ത മൊഡ്യൂളുകൾ വിവിധ പ്ലാറ്റ്ഫോമുകളിലെ വിവിധ സന്നദ്ധപ്രവർത്തകർ പരിശോധിക്കുന്നു.
ഈ CPAN ടെസ്റ്റർമാർക്ക് ഓരോ പുതിയ അപ്ലോഡും മെയിൽ വഴി അറിയിക്കുകയും ലിസ്റ്റിലേക്ക് മറുപടി നൽകുകയും ചെയ്യുന്നു
പാസ്സ്, പരാജയം, NA (ഈ പ്ലാറ്റ്ഫോമിന് ബാധകമല്ല), അല്ലെങ്കിൽ അജ്ഞാതമായത് (അജ്ഞാതം), ഒപ്പം
പ്രസക്തമായ നൊട്ടേഷനുകൾ.
ടെസ്റ്റിംഗിന്റെ ഉദ്ദേശ്യം ഇരട്ടിയാണ്: ഒന്ന്, ഡെവലപ്പർമാരെ അവരുടെ പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ സഹായിക്കുക
മറ്റ് പ്ലാറ്റ്ഫോമുകളിൽ ടെസ്റ്റിംഗ് ഇല്ലാത്തതിനാൽ ക്രോപ്പ് ചെയ്യുന്ന കോഡ്; രണ്ട്, ഉപയോക്താക്കളെ നൽകാൻ
തന്നിരിക്കുന്ന മൊഡ്യൂൾ ഒരു നിശ്ചിത പ്ലാറ്റ്ഫോമിൽ പ്രവർത്തിക്കുന്നുണ്ടോ എന്നതിനെക്കുറിച്ചുള്ള വിവരങ്ങൾക്കൊപ്പം.
ഇതും കാണുക:
· അയക്കേണ്ട പട്ടിക: cpan-testers-discuss@perl.org
· പരിശോധനാ ഫലങ്ങൾ:http://www.cpantesters.org/>
പ്ലാറ്റ്ഫോമുകൾ
ഒരു $^O വേരിയബിൾ ഉപയോഗിച്ചാണ് പേൾ നിർമ്മിച്ചിരിക്കുന്നത്, അത് നിർമ്മിച്ച ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തെ സൂചിപ്പിക്കുന്നു.
"Config ഉപയോഗിക്കേണ്ട" കോഡ് വേഗത്തിലാക്കാൻ സഹായിക്കുന്നതിന് ഇത് നടപ്പിലാക്കി
$Config{osname} എന്നതിന്റെ മൂല്യം ഉപയോഗിക്കുക. തീർച്ചയായും, ഇതിനെക്കുറിച്ച് കൂടുതൽ വിശദമായ വിവരങ്ങൾ ലഭിക്കുന്നതിന്
സിസ്റ്റം, % കോൺഫിഗറിലേക്ക് നോക്കുന്നത് തീർച്ചയായും ശുപാർശ ചെയ്യുന്നു.
%കോൺഫിഗിനെ എല്ലായ്പ്പോഴും വിശ്വസിക്കാൻ കഴിയില്ല, കാരണം ഇത് കംപൈൽ സമയത്ത് നിർമ്മിച്ചതാണ്. perl ആണെങ്കിൽ
ഒരിടത്ത് നിർമ്മിച്ചത്, പിന്നീട് മറ്റൊരിടത്തേക്ക് മാറ്റി, ചില മൂല്യങ്ങൾ തെറ്റായിരിക്കാം. മൂല്യങ്ങൾ
വസ്തുതയ്ക്ക് ശേഷം പോലും എഡിറ്റ് ചെയ്തിരിക്കാം.
യൂണിക്സ്
Unix, Unix പോലുള്ള അമ്പരപ്പിക്കുന്ന വൈവിധ്യമാർന്ന പ്ലാറ്റ്ഫോമുകളിൽ പേൾ പ്രവർത്തിക്കുന്നു (ഉദാ: മിക്കതും കാണുക
ലെ ഫയലുകൾ സൂചനകൾ/ സോഴ്സ് കോഡ് കിറ്റിലെ ഡയറക്ടറി). ഈ സിസ്റ്റങ്ങളിൽ മിക്കതിലും, ദി
$^O യുടെ മൂല്യം (അതിനാൽ $Config{'osname'}) ചെറിയക്ഷരങ്ങൾ ഉപയോഗിച്ച് നിർണ്ണയിക്കപ്പെടുന്നു
"uname -a" (അല്ലെങ്കിൽ
സമാനമായ ഒരു കമാൻഡ്) ഷെൽ പ്രോംപ്റ്റിൽ അല്ലെങ്കിൽ സാന്നിധ്യത്തിനായി ഫയൽ സിസ്റ്റം പരീക്ഷിച്ചുകൊണ്ട്
കേർണൽ അല്ലെങ്കിൽ ഹെഡർ ഫയൽ പോലുള്ള അദ്വിതീയമായി പേരുള്ള ഫയലുകൾ. ഇവിടെ, ഉദാഹരണത്തിന്, അവയിൽ ചിലത്
കൂടുതൽ ജനപ്രിയമായ Unix സുഗന്ധങ്ങൾ:
uname $^O $Config{'archname'}
--------------------------------------------
AIX aix aix
BSD/OS bsdos i386-bsdos
ഡാർവിൻ ഡാർവിൻ ഡാർവിൻ
DYNIX/ptx dynixptx i386-dynixptx
FreeBSD freebsd freebsd-i386
ഹൈക്കു ഹൈക്കു BePC-haiku
Linux linux arm-linux
Linux linux armv5tel-linux
Linux linux i386-linux
Linux linux i586-linux
Linux linux ppc-linux
HP-UX hpux PA-RISC1.1
IRIX irix irix
Mac OS X ഡാർവിൻ ഡാർവിൻ
നെക്സ്റ്റ് 3 അടുത്ത ഫാറ്റ്
അടുത്ത 4 അടുത്ത OPENSTEP-Mach
openbsd openbsd i386-openbsd
OSF1 dec_osf alpha-dec_osf
reliantunix-n svr4 RM400-svr4
SCO_SV sco_sv i386-sco_sv
SINIX-N svr4 RM400-svr4
sn4609 unicos CRAY_C90-unicos
sn6521 unicosmk t3e-unicosmk
sn9617 unicos CRAY_J90-unicos
SunOS സോളാരിസ് sun4-solaris
SunOS സോളാരിസ് i86pc-solaris
SunOS4 sunos sun4-sunos
$Config{archname} എന്നതിന്റെ മൂല്യം ഹാർഡ്വെയർ ആർക്കിടെക്ചറിനെ ആശ്രയിച്ചിരിക്കുന്നതിനാൽ, അതിന് കഴിയും
$^O മൂല്യത്തേക്കാൾ കൂടുതൽ വ്യത്യാസപ്പെടുന്നു.
ഡോസ് ഒപ്പം ഡെറിവേറ്റീവ്
പിസി-ഡോസ് പോലുള്ള സിസ്റ്റങ്ങൾക്ക് കീഴിൽ പ്രവർത്തിക്കുന്ന ഇന്റൽ-സ്റ്റൈൽ മൈക്രോകമ്പ്യൂട്ടറുകളിലേക്ക് പേൾ വളരെക്കാലമായി പോർട്ട് ചെയ്തിട്ടുണ്ട്,
MS-DOS, OS/2, കൂടാതെ മിക്ക വിൻഡോസ് പ്ലാറ്റ്ഫോമുകളും നിങ്ങൾക്ക് സ്വയം പരാമർശിക്കാൻ കഴിയും (ഒഴികെ
Windows CE, നിങ്ങൾ അത് കണക്കാക്കുകയാണെങ്കിൽ). പരിചയമുള്ള ഉപയോക്താക്കൾ COMMAND.COM or CMD.EXE സ്റ്റൈൽ ഷെല്ലുകൾ
ഈ ഓരോ ഫയൽ സ്പെസിഫിക്കേഷനും സൂക്ഷ്മമായ വ്യത്യാസങ്ങളുണ്ടാകാമെന്ന് അറിഞ്ഞിരിക്കണം:
എന്റെ $filespec0 = "c:/foo/bar/file.txt";
എന്റെ $filespec1 = "c:\\foo\\bar\\file.txt";
എന്റെ $filespec2 = 'c:\foo\bar\file.txt';
എന്റെ $filespec3 = 'c:\\foo\\bar\\file.txt';
സിസ്റ്റം കോളുകൾ പാത്ത് സെപ്പറേറ്ററായി "/" അല്ലെങ്കിൽ "\" സ്വീകരിക്കുന്നു. എന്നിരുന്നാലും, നിരവധി കമാൻഡ്-ലൈൻ
ഡോസ് വിന്റേജിന്റെ യൂട്ടിലിറ്റികൾ "/" ഓപ്ഷൻ പ്രിഫിക്സായി പരിഗണിക്കുന്നു, അതിനാൽ ഫയൽനാമങ്ങൾ ആശയക്കുഴപ്പത്തിലായേക്കാം
"/" അടങ്ങിയിരിക്കുന്നു. ഏതെങ്കിലും ബാഹ്യ പ്രോഗ്രാമുകളെ വിളിക്കുന്നത് ഒഴികെ, "/" നന്നായി പ്രവർത്തിക്കും, കൂടാതെ
ഒരുപക്ഷേ നല്ലത്, കാരണം ഇത് ജനപ്രിയ ഉപയോഗവുമായി കൂടുതൽ പൊരുത്തപ്പെടുന്നു, കൂടാതെ പ്രശ്നം ഒഴിവാക്കുന്നു
എന്താണ് ബാക്ക്വാക്ക് ചെയ്യേണ്ടതെന്നും എന്തുചെയ്യരുതെന്നും ഓർമ്മിക്കുന്നു.
ഡോസ് ഫാറ്റ് ഫയൽസിസ്റ്റത്തിന് "8.3" ശൈലിയിലുള്ള ഫയൽനാമങ്ങൾ മാത്രമേ ഉൾക്കൊള്ളാൻ കഴിയൂ. "കേസിന് കീഴിൽ-
സെൻസിറ്റീവ്, എന്നാൽ കെയ്സ്-പ്രിസർവിംഗ്" HPFS (OS/2), NTFS (NT) ഫയൽസിസ്റ്റം നിങ്ങൾ ആയിരിക്കാം
"readdir" പോലെയുള്ള ഫംഗ്ഷനുകൾ ഉപയോഗിച്ച് മടക്കിനൽകുന്ന അല്ലെങ്കിൽ പോലുള്ള ഫംഗ്ഷനുകൾ ഉപയോഗിച്ച് കേസ് പരിഗണിക്കുമ്പോൾ ശ്രദ്ധിക്കുക
"തുറക്കുക" അല്ലെങ്കിൽ "ഓപ്പൺഡിർ".
AUX, PRN, NUL, CON, COM1, LPT1, എന്നിങ്ങനെ പല ഫയൽനാമങ്ങളും ഡോസ് പ്രത്യേകമായി കണക്കാക്കുന്നു.
LPT2, മുതലായവ. നിർഭാഗ്യവശാൽ, ചിലപ്പോൾ ഈ ഫയൽനാമങ്ങൾ നിങ്ങൾ ഉൾപ്പെടുത്തിയാൽ പോലും പ്രവർത്തിക്കില്ല
വ്യക്തമായ ഡയറക്ടറി പ്രിഫിക്സ്. നിങ്ങളുടെ കോഡ് വേണമെങ്കിൽ അത്തരം ഫയൽ നാമങ്ങൾ ഒഴിവാക്കുന്നതാണ് നല്ലത്
ഡോസിലേക്കും അതിന്റെ ഡെറിവേറ്റീവുകളിലേക്കും പോർട്ടബിൾ ആയിരിക്കുക. ഇവയെല്ലാം എന്താണെന്ന് അറിയാൻ പ്രയാസമാണ്,
നിർഭാഗ്യവശാൽ.
ഈ ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളുടെ ഉപയോക്താക്കൾക്കും ഇതുപോലുള്ള സ്ക്രിപ്റ്റുകൾ ഉപയോഗിക്കാൻ താൽപ്പര്യമുണ്ടാകാം pl2bat.bat
or pl2cmd നിങ്ങളുടെ സ്ക്രിപ്റ്റുകൾക്ക് ചുറ്റും റാപ്പറുകൾ ഇടാൻ.
ഫയലുകളിൽ നിന്ന് വായിക്കുകയും എഴുതുകയും ചെയ്യുമ്പോൾ ന്യൂലൈൻ ("\n") STDIO "\015\012" എന്ന് വിവർത്തനം ചെയ്യുന്നു
("ന്യൂലൈനുകൾ" കാണുക). "binmode(FILEHANDLE)" അതിനായി "\n" എന്നതിനെ "\012" ആയി വിവർത്തനം ചെയ്തു സൂക്ഷിക്കും
ഫയൽ ഹാൻഡിൽ. മറ്റ് സിസ്റ്റങ്ങളിൽ ഇത് നോ-ഓപ് ആയതിനാൽ, ക്രോസ്-ക്ക് "ബിൻമോഡ്" ഉപയോഗിക്കണം.
ബൈനറി ഡാറ്റ കൈകാര്യം ചെയ്യുന്ന പ്ലാറ്റ്ഫോം കോഡ്. നിങ്ങൾ അത് മുൻകൂട്ടി മനസ്സിലാക്കുന്നുവെന്ന് കരുതുക
നിങ്ങളുടെ ഡാറ്റ ബൈനറിയിലാണ്. പൊതു-ഉദ്ദേശ്യ പരിപാടികൾ പലപ്പോഴും അവയെ കുറിച്ച് ഒന്നും കരുതരുത്
ഡാറ്റ.
വിവിധ ഡോസിഷ് പെർലുകളുടെ $^O വേരിയബിളും $Config{archname} മൂല്യങ്ങളും ഇപ്രകാരമാണ്:
OS $^O $Config{archname} ഐഡി പതിപ്പ്
-------------------------------------------------- ------
MS-DOS ഡോസ് ?
PC-DOS ഡോസ്?
OS/2 os2?
വിൻഡോസ് 3.1? ? 0 3 01
Windows 95 MSWin32 MSWin32-x86 1 4 00
Windows 98 MSWin32 MSWin32-x86 1 4 10
Windows ME MSWin32 MSWin32-x86 1 ?
Windows NT MSWin32 MSWin32-x86 2 4 xx
Windows NT MSWin32 MSWin32-ALPHA 2 4 xx
Windows NT MSWin32 MSWin32-ppc 2 4 xx
Windows 2000 MSWin32 MSWin32-x86 2 5 00
Windows XP MSWin32 MSWin32-x86 2 5 01
Windows 2003 MSWin32 MSWin32-x86 2 5 02
Windows Vista MSWin32 MSWin32-x86 2 6 00
Windows 7 MSWin32 MSWin32-x86 2 6 01
Windows 7 MSWin32 MSWin32-x64 2 6 01
Windows 2008 MSWin32 MSWin32-x86 2 6 01
Windows 2008 MSWin32 MSWin32-x64 2 6 01
Windows CE MSWin32 ? 3
സിഗ്വിൻ സിഗ്വിൻ സിഗ്വിൻ
വിവിധ MSWin32 Perl-ന്റെ മൂല്യം വഴി അവർ പ്രവർത്തിക്കുന്ന OS വേർതിരിച്ചറിയാൻ കഴിയും.
"Win32::GetOSVersion()" എന്നതിൽ നിന്ന് ലഭിച്ച പട്ടികയുടെ അഞ്ചാമത്തെ ഘടകം. ഉദാഹരണത്തിന്:
എങ്കിൽ ($^O eq 'MSWin32') {
എന്റെ @os_version_info = Win32::GetOSVersion();
പ്രിന്റ് +('3.1','95','NT')[$os_version_info[4]],"\n";
}
"Win32::IsWinNT()", "Win32::IsWin95()" എന്നിവയും ഉണ്ട്; "perldoc Win32" പരീക്ഷിക്കുക, കൂടാതെ
libwin32 0.19 (കോർ Perl വിതരണത്തിന്റെ ഭാഗമല്ല) "Win32::GetOSName()". വളരെ
പോർട്ടബിൾ "POSIX::uname()" യും പ്രവർത്തിക്കും:
c:\> perl -MPOSIX -we "print join '|', uname"
Windows NT|moonru|5.0|Build 2195 (Service Pack 2)|x86
ഇതും കാണുക:
ഡോസിനുള്ള djgpp പരിസ്ഥിതി,http://www.delorie.com/djgpp/> ഒപ്പം പെർഡോസും.
ഡോസ്, ഒഎസ്/2 മുതലായവയ്ക്കുള്ള EMX പരിതസ്ഥിതി. emx@iaehv.nl,
<ftp://hobbes.nmsu.edu/pub/os2/dev/emx/> കൂടാതെ പെർലോസ്2.
Win32-നുള്ള നിർദ്ദേശങ്ങൾ perlwin32-ൽ അല്ലെങ്കിൽ സിഗ്നസ് പരിതസ്ഥിതിയിൽ നിർമ്മിക്കുക
പെർൾസിഗ്വിൻ.
· Win32 ലെ "Win32::*" മൊഡ്യൂളുകൾ.
· ആക്ടീവ് സ്റ്റേറ്റ് പേജുകൾ,http://www.activestate.com/>
Win32 നായുള്ള സിഗ്വിൻ പരിസ്ഥിതി; README.cygwin (perlcygwin ആയി ഇൻസ്റ്റാൾ ചെയ്തു)
<http://www.cygwin.com/>
Win32-നുള്ള U/WIN പരിസ്ഥിതി,http://www.research.att.com/sw/tools/uwin/>
· OS/2, perlos2 എന്നതിനായുള്ള നിർദ്ദേശങ്ങൾ നിർമ്മിക്കുക
വി.എം.എസ്
പേൾ ഡിസ്ട്രിബ്യൂഷനിലെ perlvms-ൽ VMS-ലെ Perl ചർച്ച ചെയ്യപ്പെടുന്നു.
ഈ എഴുത്തിലെ VMS-ന്റെ ഔദ്യോഗിക നാമം OpenVMS എന്നാണ്.
ഡിജിറ്റൽ കമാൻഡ് ലാംഗ്വേജ് (ഡിസിഎൽ) ഷെല്ലിൽ നിന്ന് പേളുമായി ഇടപഴകുന്നതിന് പലപ്പോഴും ഒരു
Unix ഷെല്ലുകളേക്കാൾ വ്യത്യസ്തമായ ഉദ്ധരണി ചിഹ്നങ്ങൾ. ഉദാഹരണത്തിന്:
$ perl -e "print ""ഹലോ, വേൾഡ്.\n"""
ഹലോ വേൾഡ്.
DCL-ൽ നിങ്ങളുടെ Perl സ്ക്രിപ്റ്റുകൾ പൊതിയാൻ നിരവധി മാർഗങ്ങളുണ്ട് .com, ഫയലുകൾ, നിങ്ങൾ അങ്ങനെയാണെങ്കിൽ
ചായ്വുള്ള. ഉദാഹരണത്തിന്:
$ എഴുതുക sys$ output "DCL-ൽ നിന്ന് ഹലോ!"
$ എങ്കിൽ p1 .eqs. ""
$ പിന്നെ perl -x 'f$environment("PROCEDURE")
$ else perl -x - 'p1 'p2 'p3 'p4 'p5 'p6 'p7 'p8
$ ഡെക്ക്/ഡോളറുകൾ="__END__"
#!/usr/bin/perl
"Perl-ൽ നിന്ന് ഹലോ!\n";
__അവസാനിക്കുന്നു__
$ endif
നിങ്ങളുടെ Perl-in-DCL സ്ക്രിപ്റ്റ് ആണെങ്കിൽ, "$ ASSIGN/nolog/user SYS$COMMAND: SYS$INPUT" ഉപയോഗിച്ച് ശ്രദ്ധിക്കുക
"$read = പോലെയുള്ള കാര്യങ്ങൾ ചെയ്യാൻ പ്രതീക്ഷിക്കുന്നു ;".
VMS ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന് രണ്ട് ഫയൽസിസ്റ്റം ഉണ്ട്, അവയുടെ ഓൺ-ഡിസ്ക് ഘടന (ODS)
ലെവൽ: ODS-2, അതിന്റെ പിൻഗാമി ODS-5. പേൾ മുതൽ VMS വരെയുള്ള പ്രാരംഭ പോർട്ട് ODS-5-ന് മുമ്പാണ്,
എന്നാൽ നിലവിലുള്ള എല്ലാ ടെസ്റ്റിംഗും വികസനവും ODS-5 ഉം കേസ് ഉൾപ്പെടെയുള്ള അതിന്റെ കഴിവുകളും അനുമാനിക്കുന്നു
സംരക്ഷണം, ഫയൽസ്പെക്കുകളിലെ വിപുലീകൃത പ്രതീകങ്ങൾ, 8192 ബൈറ്റുകൾ വരെ നീളമുള്ള പേരുകൾ.
VMS-ലെ Perl-ൽ ഒന്നുകിൽ VMS- അല്ലെങ്കിൽ Unix-സ്റ്റൈൽ ഫയൽ സ്പെസിഫിക്കേഷനുകൾ സ്വീകരിക്കാൻ കഴിയും
താഴെ:
$ perl -ne "print if /perl_setup/i" SYS$LOGIN:LOGIN.COM
$ perl -ne "print if /perl_setup/i" / sys$login/login.com
എന്നാൽ ഇതിലെ പോലെ രണ്ടിന്റെയും മിശ്രിതമല്ല:
$ perl -ne "print if /perl_setup/i" sys$login:/login.com
sys$login:/login.com തുറക്കാൻ കഴിയില്ല: ഫയൽ സ്പെസിഫിക്കേഷൻ വാക്യഘടന പിശക്
പൊതുവേ, പോർട്ടബിലിറ്റിയിലേക്കുള്ള ഏറ്റവും എളുപ്പമാർഗ്ഗം എപ്പോഴും Unix ഫോർമാറ്റിൽ ഫയൽനാമങ്ങൾ വ്യക്തമാക്കുക എന്നതാണ്
നേറ്റീവ് കമാൻഡുകളോ യൂട്ടിലിറ്റികളോ ഉപയോഗിച്ച് അവ പ്രോസസ്സ് ചെയ്യേണ്ടതില്ലെങ്കിൽ. ഇതുമൂലം
പിന്നീടുള്ള പരിഗണനയിൽ, ഫയൽ::സ്പെക് മൊഡ്യൂൾ ഡിഫോൾട്ടായി നേറ്റീവ് ഫോർമാറ്റ് നൽകുന്നു
ഇൻപുട്ട് ഫോർമാറ്റ് പരിഗണിക്കാതെ തന്നെ സ്പെസിഫിക്കേഷനുകൾ. ഈ ഡിഫോൾട്ട് റിവേഴ്സ് ആയതിനാൽ ഫയലിന്റെ പേരുകൾ
"DECC$FILENAME_UNIX_REPORT" ഫീച്ചർ വ്യക്തമാക്കുന്നതിലൂടെ എല്ലായ്പ്പോഴും Unix ഫോർമാറ്റിൽ റിപ്പോർട്ടുചെയ്യപ്പെടുന്നു
പരിസ്ഥിതിയിൽ ലോജിക്കൽ.
ഫയൽ തരം, അല്ലെങ്കിൽ വിപുലീകരണം, എല്ലായ്പ്പോഴും VMS-ഫോർമാറ്റ് ഫയൽ സ്പെസിഫിക്കേഷനിൽ ഉണ്ടായിരിക്കും
അത് പൂജ്യമാണ്. ഇതിനർത്ഥം, ഡിഫോൾട്ടായി, "readdir" a-യിൽ ഒരു പിന്നിൽ ഡോട്ട് നൽകും
വിപുലീകരണമില്ലാത്ത ഫയൽ, അതിനാൽ നിങ്ങൾ Unix-ൽ "a" കാണുന്നിടത്ത് "a" കാണും. വിഎംഎസിൽ.
എന്നിരുന്നാലും, "DECC$READDIR_DROPDOTNOTYPE" പ്രവർത്തനക്ഷമമാക്കുന്നതിലൂടെ ട്രെയിലിംഗ് ഡോട്ട് അടിച്ചമർത്തപ്പെട്ടേക്കാം
പരിതസ്ഥിതിയിലെ സവിശേഷത (സവിശേഷത ലോജിക്കൽ പേരുകളിൽ CRTL ഡോക്യുമെന്റേഷൻ കാണുക).
"\n" പ്രതിനിധീകരിക്കുന്നത് തുറന്ന ഫയലിന്റെ തരത്തെ ആശ്രയിച്ചിരിക്കുന്നു. ഇത് സാധാരണയായി "\012" പ്രതിനിധീകരിക്കുന്നു എന്നാൽ
അത് "\015", "\012", "\015\012", "\000", "\040" എന്നിവയും ആകാം, അല്ലെങ്കിൽ
ഫയൽ ഓർഗനൈസേഷനും റെക്കോർഡ് ഫോർമാറ്റും. "VMS:: Stdio" മൊഡ്യൂൾ ഇതിലേക്ക് ആക്സസ് നൽകുന്നു
VMS-ൽ അസാധാരണമായ ആട്രിബ്യൂട്ടുകളുള്ള ഫയലുകളുടെ പ്രത്യേക "fopen()" ആവശ്യകതകൾ.
OpenVMS-ലെ $^O യുടെ മൂല്യം "VMS" ആണ്. നിങ്ങൾ പ്രവർത്തിപ്പിക്കുന്ന ആർക്കിടെക്ചർ നിർണ്ണയിക്കാൻ
$Config{'archname'} റഫർ ചെയ്യുക.
VMS-ൽ, "SYS$TIMEZONE_DIFFERENTIAL" ലോജിക്കൽ നാമത്തിൽ നിന്ന് UTC ഓഫ്സെറ്റ് perl നിർണ്ണയിക്കുന്നു.
VMS യുഗം ആരംഭിച്ചത് 17-NOV-1858 00:00:00.00 ന് ആണെങ്കിലും, "ലോക്കൽടൈം" എന്നതിലേക്കുള്ള കോളുകൾ ക്രമീകരിച്ചിരിക്കുന്നു
Unix പോലെ തന്നെ 01-JAN-1970 00:00:00.00 മുതൽ ഓഫ്സെറ്റുകൾ എണ്ണാൻ.
ഇതും കാണുക:
· README.vms (ഇതായി ഇൻസ്റ്റാൾ ചെയ്തു README_vms), perlvms
vmsperl ലിസ്റ്റ്, vmsperl-subscribe@perl.org
· വെബിൽ vmsperl,http://www.sidhe.org/vmsperl/index.html>
· VMS സോഫ്റ്റ്വെയർ ഇൻക്. വെബ് സൈറ്റ്,http://www.vmssoftware.com>
VOS
VOS-ലെ Perl (ഓപ്പൺVOS എന്നും അറിയപ്പെടുന്നു) എന്നതിൽ ചർച്ച ചെയ്യപ്പെടുന്നു README.vos പേൾ വിതരണത്തിൽ
(perlvos ആയി ഇൻസ്റ്റാൾ ചെയ്തു). VOS-ലെ Perl-ന് VOS- അല്ലെങ്കിൽ Unix-സ്റ്റൈൽ ഫയൽ സ്വീകരിക്കാൻ കഴിയും
ഇനിപ്പറയുന്നവയിലേതെങ്കിലും പോലെ സ്പെസിഫിക്കേഷനുകൾ:
$ perl -ne "print if /perl_setup/i" >system>notices
$ perl -ne "print if /perl_setup/i" /system/notices
അല്ലെങ്കിൽ രണ്ടിന്റെയും മിശ്രിതം:
$ perl -ne "print if /perl_setup/i" >system/notices
ഒബ്ജക്റ്റ് നാമങ്ങളിൽ സ്ലാഷ് പ്രതീകം ദൃശ്യമാകാൻ VOS അനുവദിക്കുന്നുണ്ടെങ്കിലും, കാരണം VOS പോർട്ട്
പേൾ അതിനെ പ്രതീകം, VOS ഫയലുകൾ, ഡയറക്ടറികൾ അല്ലെങ്കിൽ ലിങ്കുകൾ ഡീലിമിറ്റിംഗ് ചെയ്യുന്ന ഒരു പാത്ത് നെയിം ആയി വ്യാഖ്യാനിക്കുന്നു
ഒരു സ്ലാഷ് പ്രതീകം അടങ്ങിയ പേരുകൾ പ്രോസസ്സ് ചെയ്യാൻ കഴിയില്ല. അത്തരം ഫയലുകൾ പുനർനാമകരണം ചെയ്യണം
Perl വഴി അവ പ്രോസസ്സ് ചെയ്യുന്നതിന് മുമ്പ്.
VOS-ന്റെ പഴയ റിലീസുകൾ (ഓപ്പൺVOS റിലീസ് 17.0-ന് മുമ്പ്) ഫയൽ പേരുകൾ 32 അല്ലെങ്കിൽ അതിൽ കുറവായി പരിമിതപ്പെടുത്തുന്നു.
പ്രതീകങ്ങൾ, ഫയൽ നാമങ്ങൾ "-" പ്രതീകത്തിൽ ആരംഭിക്കുന്നത് നിരോധിക്കുക, ഫയൽ നിരോധിക്കുക
"tr/ !#%&'()*;<=>?//" എന്ന ഏതെങ്കിലും പ്രതീകം ഉൾക്കൊള്ളുന്ന പേരുകൾ.
VOS-ന്റെ പുതിയ പതിപ്പുകൾ (ഓപ്പൺവോസ് റിലീസ് 17.0 അല്ലെങ്കിൽ അതിനുശേഷമുള്ളത്) വിപുലീകൃത എന്നറിയപ്പെടുന്ന ഒരു സവിശേഷതയെ പിന്തുണയ്ക്കുന്നു
പേരുകൾ. ഈ റിലീസുകളിൽ, ഫയൽ നാമങ്ങളിൽ 255 പ്രതീകങ്ങൾ വരെ അടങ്ങിയിരിക്കാം, നിരോധിച്ചിരിക്കുന്നു
ഒരു "-" പ്രതീകത്തിൽ ആരംഭിക്കുന്നത് മുതൽ, നിരോധിത പ്രതീകങ്ങളുടെ കൂട്ടം ഏതെങ്കിലുമൊന്നായി ചുരുക്കിയിരിക്കുന്നു
"tr/#%*<>?//" എന്ന പ്രതീകം പൊരുത്തപ്പെടുന്നു. ഇടങ്ങളും ഉൾപ്പെടുന്ന നിയന്ത്രണങ്ങളുണ്ട്
അപ്പോസ്ട്രോഫികൾ: ഈ പ്രതീകങ്ങൾ ഒരു പേര് ആരംഭിക്കുകയോ അവസാനിപ്പിക്കുകയോ ചെയ്യരുത്, അവയ്ക്ക് ഉടനടി കഴിയില്ല
ഒരു കാലയളവിന് മുമ്പോ പിന്തുടരുകയോ ചെയ്യുക. കൂടാതെ, ഒരു സ്പേസ് ഉടനടി മറ്റൊന്നിന് മുമ്പായി പാടില്ല
ഇടം അല്ലെങ്കിൽ ഹൈഫൻ. പ്രത്യേകിച്ചും, ഇനിപ്പറയുന്ന പ്രതീക കോമ്പിനേഷനുകൾ നിരോധിച്ചിരിക്കുന്നു:
സ്പേസ്-സ്പേസ്, സ്പേസ്-ഹൈഫൻ, പിരീഡ്-സ്പേസ്, സ്പേസ്-പീരിയഡ്, പിരീഡ്-അപ്പോസ്ട്രോഫി, അപ്പോസ്ട്രോഫി-
പിരീഡ്, ലീഡിംഗ് അല്ലെങ്കിൽ ട്രൈലിംഗ് സ്പേസ്, ലീഡിംഗ് അല്ലെങ്കിൽ ട്രെയിലിംഗ് അപ്പോസ്ട്രോഫി. ആണെങ്കിലും ഒരു
വിപുലീകൃത ഫയലിന്റെ പേര് 255 പ്രതീകങ്ങളായി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു, ഒരു പാതയുടെ പേര് ഇപ്പോഴും 256 ആയി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു
പ്രതീകങ്ങൾ.
VOS-ലെ $^O യുടെ മൂല്യം "vos" ആണ്. നിങ്ങൾ പ്രവർത്തിപ്പിക്കുന്ന ആർക്കിടെക്ചർ നിർണ്ണയിക്കാൻ
എല്ലാ % കോൺഫിഗും ലോഡ് ചെയ്യാതെ തന്നെ നിങ്ങൾക്ക് @INC അറേയുടെ ഉള്ളടക്കം പരിശോധിക്കാം
ഇതുപോലെ:
എങ്കിൽ ($^O =~ /vos/) {
പ്രിന്റ് "ഞാൻ ഒരു സ്ട്രാറ്റസ് ബോക്സിലാണ്!\n";
} else {
"ഞാൻ ഒരു സ്ട്രാറ്റസ് ബോക്സിൽ ഇല്ല!\n";
മരിക്കുക
}
ഇതും കാണുക:
· README.vos (perlvos ആയി ഇൻസ്റ്റാൾ ചെയ്തു)
VOS മെയിലിംഗ് ലിസ്റ്റ്.
VOS-ൽ Perl-ന് പ്രത്യേക മെയിലിംഗ് ലിസ്റ്റ് ഒന്നുമില്ല. നിങ്ങൾക്ക് സ്ട്രാറ്റസുമായി ബന്ധപ്പെടാം
നിങ്ങളുടെ പ്രദേശത്തിനായുള്ള ടെക്നോളജീസ് കസ്റ്റമർ അസിസ്റ്റൻസ് സെന്റർ (CAC), അല്ലെങ്കിൽ നിങ്ങൾക്ക് ഇത് ഉപയോഗിക്കാം
സ്ട്രാറ്റസ് അനോണിമസ് FTP-യിലെ വിതരണ ഫയലുകളിൽ സ്ഥിതി ചെയ്യുന്ന കോൺടാക്റ്റ് വിവരങ്ങൾ
സൈറ്റ്.
· വെബിൽ സ്ട്രാറ്റസ് ടെക്നോളജീസ്http://www.stratus.com>
· വെബിൽ VOS ഓപ്പൺ സോഴ്സ് സോഫ്റ്റ്വെയർhttp://ftp.stratus.com/pub/vos/vos.html>
EBCDIC പ്ലാറ്റ്ഫോമുകൾ
v5.22 കോർ പേൾ z/OS-ൽ പ്രവർത്തിക്കുന്നു (മുമ്പ് OS/390). സൈദ്ധാന്തികമായി അത് പ്രവർത്തിപ്പിക്കാം
AS/400 മിനികമ്പ്യൂട്ടറുകളിലും VM/ESA യിലും OS/400 ന്റെ പിൻഗാമികൾ, S/2000-ന് BS390
മെയിൻഫ്രെയിമുകൾ. അത്തരം കമ്പ്യൂട്ടറുകൾ ആന്തരികമായി EBCDIC പ്രതീക സെറ്റുകൾ ഉപയോഗിക്കുന്നു (സാധാരണയായി പ്രതീക കോഡ്
OS/0037-ന് ഐഡി 400, എസ്/1047 സിസ്റ്റങ്ങൾക്ക് 390 അല്ലെങ്കിൽ POSIX-BC എന്നിവ സജ്ജമാക്കുക).
ഈ വിഭാഗത്തിന്റെ ബാക്കി ഭാഗങ്ങൾ അപ്ഡേറ്റ് ചെയ്യേണ്ടതായി വന്നേക്കാം, എന്നാൽ അത് എന്താണ് പറയേണ്ടതെന്ന് ഞങ്ങൾക്ക് അറിയില്ല. ദയവായി
എന്നതിലേക്ക് അഭിപ്രായങ്ങൾ ഇമെയിൽ ചെയ്യുക perlbug@perl.org <mailto:perlbug@perl.org>.
മെയിൻഫ്രെയിമിൽ, നിലവിൽ "OS/390-നുള്ള യുണിക്സ് സിസ്റ്റം സേവനങ്ങൾ" എന്നതിന് കീഴിലാണ് പേൾ പ്രവർത്തിക്കുന്നത്.
(മുമ്പ് ഓപ്പൺ എഡിഷൻ എന്നറിയപ്പെട്ടിരുന്നു), VM/ESA ഓപ്പൺ എഡിഷൻ അല്ലെങ്കിൽ BS200 POSIX-BC സിസ്റ്റം (BS2000
Perl 5.6-ലും അതിലും ഉയർന്ന പതിപ്പിലും പിന്തുണയ്ക്കുന്നു). വിശദാംശങ്ങൾക്ക് perlos390 കാണുക. OS/400-നുള്ള കാര്യം ശ്രദ്ധിക്കുക
പേൾ 5.8.1/5.10.0 അല്ലെങ്കിൽ അതിനു ശേഷമുള്ള ഒരു പോർട്ടും ഉണ്ട്, അത് ASCII അടിസ്ഥാനമാക്കിയുള്ളതാണ് (ഇത് പോലെ
EBCDIC അടിസ്ഥാനമാക്കിയുള്ള ILE-ന് എതിരായി), perlos400 കാണുക.
OS/2.5-നുള്ള USS-ന്റെ R390-ന്റെയും VM/ESA-യുടെ 2.3 പതിപ്പിന്റെയും കണക്കനുസരിച്ച്, ഈ Unix ഉപ-സിസ്റ്റങ്ങൾ അങ്ങനെയല്ല.
"#!" പിന്തുണയ്ക്കുക സ്ക്രിപ്റ്റ് അഭ്യർത്ഥനയ്ക്കുള്ള ഷെബാംഗ് ട്രിക്ക്. അതിനാൽ, OS/390, VM/ESA Perl എന്നിവയിൽ
ഇനിപ്പറയുന്ന ലളിതമായ സ്ക്രിപ്റ്റിന് സമാനമായ തലക്കെട്ട് ഉപയോഗിച്ച് സ്ക്രിപ്റ്റുകൾ എക്സിക്യൂട്ട് ചെയ്യാൻ കഴിയും:
: # perl ഉപയോഗിക്കുക
eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}'
0 ആണെങ്കിൽ;
#!/usr/local/bin/perl # ശരിക്കും ഒരു അഭിപ്രായം മാത്രം
"ഹലോ ഫ്രം perl!\n";
OS/390 "#!"-നെ പിന്തുണയ്ക്കും. റിലീസ് 2.8-ലും അതിനുശേഷവും ഷെബാംഗ് ട്രിക്ക്. "സിസ്റ്റം" എന്നതിലേക്കുള്ള കോളുകൾ
കൂടാതെ ബാക്ക്ടിക്കുകൾക്ക് എല്ലാ S/390 സിസ്റ്റങ്ങളിലും POSIX ഷെൽ സിന്റാക്സ് ഉപയോഗിക്കാം.
AS/400-ൽ, നിങ്ങളുടെ ലൈബ്രറി ലിസ്റ്റിൽ PERL5 ഉണ്ടെങ്കിൽ, നിങ്ങളുടെ പേൾ സ്ക്രിപ്റ്റുകൾ പൊതിയേണ്ടി വന്നേക്കാം
അവരെ ഇതുപോലെ വിളിക്കുന്നതിനുള്ള ഒരു CL നടപടിക്രമം:
ആരംഭിക്കുന്നു
വിളിക്കുക PGM(PERL5/PERL) PARM('/QOpenSys/hello.pl')
ENDPGM
ഇത് പേൾ സ്ക്രിപ്റ്റ് ആവശ്യപ്പെടും hello.pl QOpenSys ഫയൽ സിസ്റ്റത്തിന്റെ റൂട്ടിൽ. ന്
"സിസ്റ്റം" അല്ലെങ്കിൽ ബാക്ക്ടിക്കിലേക്കുള്ള AS/400 കോളുകൾ CL വാക്യഘടന ഉപയോഗിക്കണം.
ഈ പ്ലാറ്റ്ഫോമുകളിൽ, EBCDIC പ്രതീക സെറ്റ് എന്തിനെ സ്വാധീനിച്ചേക്കാമെന്ന് ഓർമ്മിക്കുക
ചില Perl ഫംഗ്ഷനുകൾക്കൊപ്പം സംഭവിക്കുന്നു ("chr", "പാക്ക്", "print", "printf", "ord", "sort",
"sprintf", "unpack"), അതുപോലെ ASCII സ്ഥിരാങ്കങ്ങൾ ഉപയോഗിച്ച് ബിറ്റ്-ഫിഡിംഗ് പോലുള്ള ഓപ്പറേറ്റർമാർ
"^", "&", "|", ASCII കമ്പ്യൂട്ടറുകളിലേക്കുള്ള സോക്കറ്റ് ഇന്റർഫേസുകൾ കൈകാര്യം ചെയ്യുന്നതിനെക്കുറിച്ച് പരാമർശിക്കേണ്ടതില്ല (കാണുക
"ന്യൂലൈനുകൾ").
ഭാഗ്യവശാൽ, മെയിൻഫ്രെയിമിനുള്ള മിക്ക വെബ് സെർവറുകളും "\n" എന്നത് ശരിയായി വിവർത്തനം ചെയ്യും
അതിന്റെ ASCII തത്തുല്യമായ ഇനിപ്പറയുന്ന പ്രസ്താവന ("\r" Unix, z/OS എന്നിവയ്ക്ക് കീഴിലും സമാനമാണ്):
"ഉള്ളടക്ക തരം: വാചകം/html\r\n\r\n" അച്ചടിക്കുക;
ഈ പ്ലാറ്റ്ഫോമുകളിൽ ചിലത് $^O യുടെ മൂല്യങ്ങളിൽ ഉൾപ്പെടുന്നു:
uname $^O $Config{'archname'}
--------------------------------------------
OS/390 os390 os390
OS400 os400 os400
POSIX-BC posix-bc BS2000-posix-bc
നിങ്ങൾ ഒരു EBCDIC പ്ലാറ്റ്ഫോമിലാണോ പ്രവർത്തിക്കുന്നതെന്ന് നിർണ്ണയിക്കുന്നതിനുള്ള ചില ലളിതമായ തന്ത്രങ്ങൾ ഉൾപ്പെടുത്താം
ഇനിപ്പറയുന്നവയിൽ ഏതെങ്കിലും (ഒരുപക്ഷേ എല്ലാം):
എങ്കിൽ ("\t" eq "\005") { print "EBCDIC ഇവിടെ സംസാരിച്ചേക്കാം!\n"; }
എങ്കിൽ (ord('A') == 193) {print "EBCDIC ഇവിടെ സംസാരിച്ചേക്കാം!\n"; }
if (ബി.സി(169) eq 'z') { print "EBCDIC ഇവിടെ സംസാരിച്ചേക്കാം!\n"; }
നിങ്ങൾ ആശ്രയിക്കാൻ ആഗ്രഹിക്കാത്ത ഒരു കാര്യം വിരാമചിഹ്ന പ്രതീകങ്ങളുടെ EBCDIC എൻകോഡിംഗ് ആണ്
കാരണം ഇവ കോഡ് പേജിൽ നിന്ന് കോഡ് പേജിലേക്ക് വ്യത്യാസപ്പെട്ടേക്കാം (ഒരിക്കൽ നിങ്ങളുടെ മൊഡ്യൂൾ അല്ലെങ്കിൽ സ്ക്രിപ്റ്റ്
EBCDIC-നൊപ്പം പ്രവർത്തിക്കുമെന്ന് കിംവദന്തികൾ, എല്ലാ EBCDIC പ്രതീക സെറ്റുകളിലും ഇത് പ്രവർത്തിക്കണമെന്ന് ആളുകൾ ആഗ്രഹിക്കും).
ഇതും കാണുക:
· perlos390, perlos400, perlbs2000, perlebcdic.
· ദി perl-mvs@perl.org പോർട്ടിംഗ് പ്രശ്നങ്ങളും പൊതുവായും ചർച്ച ചെയ്യുന്നതിനുള്ളതാണ് ലിസ്റ്റ്
എല്ലാ EBCDIC പെർലുകളുടെയും ഉപയോഗ പ്രശ്നങ്ങൾ. "subscribe perl-mvs" എന്ന സന്ദേശ ബോഡി ഇതിലേക്ക് അയക്കുക
majordomo@perl.org.
· AS/400 Perl വിവരങ്ങൾ ഇവിടെhttp://as400.rochester.ibm.com/> അതുപോലെ CPAN-ലും
തുറമുഖങ്ങൾ/ ഡയറക്ടറി.
ആൽക്കഹോൾ റിസ്ക് OS
കാരണം, യുണിക്സ് പോലെയുള്ള "\012" ആയി ടെക്സ്റ്റ് ഫയലുകളിൽ ന്യൂലൈനുകൾ ("\n") ഉള്ള ASCII ഉപയോഗിക്കുന്നു
Unix ഫയൽ നെയിം എമുലേഷൻ ഡിഫോൾട്ടായി ഓണാക്കിയതിനാൽ, മിക്ക ലളിതമായ സ്ക്രിപ്റ്റുകളും ഒരുപക്ഷെ
"ബോക്സിന് പുറത്ത്" പ്രവർത്തിക്കുക. നേറ്റീവ് ഫയൽസിസ്റ്റം മോഡുലാർ ആണ്, കൂടാതെ വ്യക്തിഗത ഫയൽസിസ്റ്റം ആണ്
കേസ്-സെൻസിറ്റീവ് അല്ലെങ്കിൽ സെൻസിറ്റീവ് ആകാനുള്ള സ്വാതന്ത്ര്യം, സാധാരണയായി കേസ്-പ്രിസർവിംഗ്. ചില നാട്ടുകാരൻ
ഫയൽസിസ്റ്റമുകൾക്ക് നെയിം ലെങ്ത് പരിധികളുണ്ട്, ഏത് ഫയലിന്റെയും ഡയറക്ടറിയുടെയും പേരുകൾ നിശബ്ദമായി വെട്ടിച്ചുരുക്കിയിരിക്കുന്നു
യോജിക്കാൻ. സ്റ്റാൻഡേർഡ് ഫയൽസിസ്റ്റത്തിന് നിലവിൽ ഒരു നെയിം ലെങ്ത് ഉണ്ടെന്ന് സ്ക്രിപ്റ്റുകൾ അറിഞ്ഞിരിക്കണം
പരിധി 10 ഒരു ഡയറക്ടറിയിൽ 77 ഇനങ്ങൾ വരെ ഉള്ള പ്രതീകങ്ങൾ, എന്നാൽ മറ്റ് ഫയൽസിസ്റ്റമുകൾ പാടില്ല
അത്തരം പരിമിതികൾ ഏർപ്പെടുത്തുക.
പ്രാദേശിക ഫയൽ നാമങ്ങൾ രൂപത്തിലുള്ളതാണ്
Filesystem#Special_Field::DiskName.$.Directory.Directory.File
എവിടെ
സ്പെഷ്യൽ_ഫീൽഡ് സാധാരണയായി നിലവിലില്ല, പക്ഷേ അടങ്ങിയിരിക്കാം. കൂടാതെ $.
ഫയൽസിസ്റ്റം =~ m|[A-Za-z0-9_]|
DsicName =~ m|[A-Za-z0-9_/]|
$ റൂട്ട് ഡയറക്ടറിയെ പ്രതിനിധീകരിക്കുന്നു
. പാത്ത് സെപ്പറേറ്റർ ആണ്
@ ആണ് നിലവിലെ ഡയറക്ടറി (ഓരോ ഫയൽസിസ്റ്റത്തിനും എന്നാൽ മെഷീൻ ഗ്ലോബൽ)
^ ആണ് പാരന്റ് ഡയറക്ടറി
ഡയറക്ടറിയും ഫയലും =~ m|[^\0- "\.\$\%\&:\@\\^\|\177]+|
സ്ഥിരസ്ഥിതി ഫയൽനാമ വിവർത്തനം ഏകദേശം "tr| ആണ്/.|./|;"
""ADFS::HardDisk.$.File" അല്ല 'ADFS::HardDisk.$.File'" എന്നതും രണ്ടാം ഘട്ടവും ശ്രദ്ധിക്കുക
പതിവ് പദപ്രയോഗങ്ങളിൽ "$" എന്നതിന്റെ ഇന്റർപോളേഷൻ $-നെ തെറ്റിക്കും. സ്ക്രിപ്റ്റുകൾ ഇല്ലെങ്കിൽ
ശ്രദ്ധയോടെ.
കോമയാൽ വേർതിരിച്ച തിരയൽ ലിസ്റ്റുകൾ അടങ്ങുന്ന സിസ്റ്റം വേരിയബിളുകൾ വ്യക്തമാക്കിയ ലോജിക്കൽ പാതകൾ
കൂടാതെ അനുവദിച്ചിരിക്കുന്നു; അതിനാൽ "സിസ്റ്റം:മൊഡ്യൂളുകൾ" എന്നത് ഒരു സാധുവായ ഫയൽനാമമാണ്, കൂടാതെ ഫയൽസിസ്റ്റം പ്രിഫിക്സ് ചെയ്യും
ഒരു ഒബ്ജക്റ്റിലേക്ക് ചൂണ്ടിക്കാണിക്കുന്ന ഒരു പേര് സൃഷ്ടിക്കുന്നത് വരെ "സിസ്റ്റം$പാത്ത്" ന്റെ ഓരോ വിഭാഗവുമായുള്ള "മൊഡ്യൂളുകൾ"
ഡിസ്കിൽ. "സിസ്റ്റം:മൊഡ്യൂളുകൾ" എന്ന പുതിയ ഫയലിലേക്ക് എഴുതുന്നത് "സിസ്റ്റം$പാത്ത്" ആണെങ്കിൽ മാത്രമേ അനുവദിക്കൂ.
ഒരൊറ്റ ഇനം ലിസ്റ്റ് അടങ്ങിയിരിക്കുന്നു. ഫയൽസിസ്റ്റം സിസ്റ്റം വേരിയബിളുകൾ വികസിപ്പിക്കുകയും ചെയ്യും
ഫയലിന്റെ പേരുകൾ ആംഗിൾ ബ്രാക്കറ്റിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ടെങ്കിൽ, അങ്ങനെ " .മൊഡ്യൂളുകൾ" ഫയലിനായി നോക്കും
"$ENV{'System$Dir'} . 'മൊഡ്യൂളുകൾ'". ഇതിന്റെ വ്യക്തമായ സൂചന അതാണ് പൂർണ്ണമായി യോഗ്യതയുള്ളത്
ഫയൽനാമങ്ങൾ കഴിയും തുടക്കം കൂടെ "<>" കൂടാതെ ഇൻപുട്ടിനായി "ഓപ്പൺ" ഉപയോഗിക്കുമ്പോൾ സംരക്ഷിക്കപ്പെടണം.
കാരണം "." ഒരു ഡയറക്ടറി സെപ്പറേറ്ററായി ഉപയോഗത്തിലിരുന്നതിനാൽ ഫയൽനാമങ്ങൾ ആയിരിക്കുമെന്ന് കരുതാൻ കഴിയില്ല
10 പ്രതീകങ്ങൾക്ക് ശേഷം അദ്വിതീയമായ, ".c" എന്ന ട്രെയിലിംഗ് സ്ട്രിപ്പ് ചെയ്യാൻ Acorn C കംപൈലർ നടപ്പിലാക്കി.
സോഴ്സ് കോഡിൽ വ്യക്തമാക്കിയ ഫയൽനാമങ്ങളിൽ നിന്നുള്ള ".h" ".s", ".o" എന്നീ പ്രത്യയങ്ങൾ സംഭരിക്കുകയും അതത് സംഭരിക്കുകയും ചെയ്യുക
സഫിക്സിന്റെ പേരിലുള്ള ഉപഡയറക്ടറികളിലെ ഫയലുകൾ. അതിനാൽ ഫയലുകൾ വിവർത്തനം ചെയ്യപ്പെടുന്നു:
foo.h h.foo
C:foo.h C:h.foo (ലോജിക്കൽ പാത്ത് വേരിയബിൾ)
sys/os.h sys.h.os (സി കമ്പൈലർ ഗ്രോക്സ് യുണിക്സ്-സ്പീക്ക്)
10charname.c c.10charname
10charname.o o.10charname
11charname_.c c.11charname (ഫയൽസിസ്റ്റം 10-ൽ വെട്ടിച്ചുരുക്കുമെന്ന് കരുതുക)
യുണിക്സ് എമുലേഷൻ ലൈബ്രറിയുടെ ഫയൽനാമങ്ങൾ നേറ്റീവ് എന്നതിലേക്കുള്ള വിവർത്തനം ഇത്തരത്തിൽ അനുമാനിക്കുന്നു
വിവർത്തനം ആവശ്യമാണ്, കൂടാതെ ഉപയോക്താവ് നിർവചിച്ചിട്ടുള്ള അറിയപ്പെടുന്ന സഫിക്സുകളുടെ ഒരു ലിസ്റ്റ് ഇത് അനുവദിക്കുന്നു
ഈ രീതിയിൽ മാറ്റുക. ഇത് സുതാര്യമാണെന്ന് തോന്നിയേക്കാം, എന്നാൽ ഈ നിയമങ്ങൾ ഉപയോഗിച്ച് അത് പരിഗണിക്കുക
foo/bar/baz.h ഒപ്പം foo/bar/h/baz രണ്ടും മാപ്പ് foo.bar.h.baz, ആ "റെഡിർ", "ഗ്ലോബ്" എന്നിവ
റിവേഴ്സ് മാപ്പിംഗ് അനുകരിക്കാൻ ശ്രമിക്കരുത്. ഫയലിന്റെ പേരിലുള്ള മറ്റ് "."
"/" എന്നതിലേക്ക് വിവർത്തനം ചെയ്തു.
മുകളിൽ സൂചിപ്പിച്ചതുപോലെ, %ENV വഴി ആക്സസ് ചെയ്യപ്പെടുന്ന പരിസ്ഥിതി ആഗോളമാണ്, കൺവെൻഷൻ ആണ്
പ്രോഗ്രാം നിർദ്ദിഷ്ട എൻവയോൺമെന്റ് വേരിയബിളുകൾ "Program$Name" എന്ന രൂപത്തിലാണ്. ഓരോന്നും
ഫയൽസിസ്റ്റം നിലവിലെ ഡയറക്ടറിയും നിലവിലെ ഫയൽസിസ്റ്റത്തിന്റെ നിലവിലെ ഡയറക്ടറിയും പരിപാലിക്കുന്നു
ആകുന്നു ഗ്ലോബൽ നിലവിലെ ഡയറക്ടറി. തൽഫലമായി, സൗഹാർദ്ദപരമായ പ്രോഗ്രാമുകൾ കറന്റ് മാറ്റില്ല
ഡയറക്ടറി എന്നാൽ പൂർണ്ണമായ പാത്ത്നെയിമുകളെ ആശ്രയിക്കുന്നു, പ്രോഗ്രാമുകൾക്ക് (കൂടാതെ മേക്ക്ഫയലുകൾ) അത് അനുമാനിക്കാനാവില്ല
നിലവിലെ ഡയറക്ടറിയെ ബാധിക്കാതെ തന്നെ മാറ്റാൻ കഴിയുന്ന ഒരു ചൈൽഡ് പ്രോസസ് ഉണ്ടാക്കാൻ കഴിയും
മാതാപിതാക്കളും (മറ്റെല്ലാവരും).
കാരണം നേറ്റീവ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഫയൽഹാൻഡിലുകൾ ആഗോളവും നിലവിൽ താഴെയായി അനുവദിച്ചതുമാണ്
255 മുതൽ, 0 ഒരു റിസർവ്ഡ് മൂല്യമായതിനാൽ, Unix എമുലേഷൻ ലൈബ്രറി Unix അനുകരിക്കുന്നു
ഫയൽഹാൻഡിലുകൾ. തൽഫലമായി, നിങ്ങൾക്ക് "STDIN", "STDOUT" അല്ലെങ്കിൽ "STDERR" എന്നിവ കടന്നുപോകുന്നതിൽ ആശ്രയിക്കാനാവില്ല
നിങ്ങളുടെ കുട്ടികൾ.
ഫോമിന്റെ ഫയൽനാമങ്ങൾ പ്രകടിപ്പിക്കാനുള്ള ഉപയോക്താക്കളുടെ ആഗ്രഹം " കമാൻഡ് ലൈനിൽ .ബാർ"
ഉദ്ധരിക്കാത്തതും പ്രശ്നങ്ങൾ ഉണ്ടാക്കുന്നു: "``" കമാൻഡ് ഔട്ട്പുട്ട് ക്യാപ്ചർ ഒരു ഊഹക്കച്ചവടം നടത്തേണ്ടതുണ്ട്.
ഒരു സ്ട്രിംഗ് "<[^<>]+\$[^<>]>" എന്നത് ഒരു എൻവയോൺമെന്റ് വേരിയബിളിന്റെ റഫറൻസാണെന്ന് ഇത് അനുമാനിക്കുന്നു,
അതേസമയം "<" അല്ലെങ്കിൽ ">" ഉൾപ്പെടുന്ന മറ്റെന്തെങ്കിലും റീഡയറക്ഷൻ ആണ്, സാധാരണയായി ഇത് 99% ആയി കൈകാര്യം ചെയ്യുന്നു
ശരിയാണ്. തീർച്ചയായും, സ്ക്രിപ്റ്റുകൾക്ക് ഏതെങ്കിലും യുണിക്സ് ടൂളുകളെ ആശ്രയിക്കാൻ കഴിയില്ല എന്നതാണ് പ്രശ്നം
ലഭ്യമാണ്, അല്ലെങ്കിൽ കണ്ടെത്തിയ ഏതെങ്കിലും ടൂളുകൾക്ക് Unix പോലെയുള്ള കമാൻഡ് ലൈൻ ആർഗ്യുമെന്റുകൾ ഉണ്ട്.
വിപുലീകരണങ്ങളും XS ഉം, സിദ്ധാന്തത്തിൽ, സൗജന്യ ടൂളുകൾ ഉപയോഗിക്കുന്ന ആർക്കും നിർമ്മിക്കാവുന്നതാണ്. പ്രായോഗികമായി, നിരവധി
അക്രോൺ പ്ലാറ്റ്ഫോമിന്റെ ഉപയോക്താക്കൾ ബൈനറി ഡിസ്ട്രിബ്യൂഷനുകൾ ഉപയോഗിക്കുന്നതിനാൽ ചെയ്യരുത്. MakeMaker ചെയ്യുന്നു
പ്രവർത്തിപ്പിക്കുക, എന്നാൽ ലഭ്യമായ ഒരു മേക്കിനും നിലവിൽ MakeMaker-ന്റെ മേക്ക് ഫയലുകളുമായി പൊരുത്തപ്പെടുന്നില്ല; എപ്പോൾ ആണെങ്കിലും
ഇത് പരിഹരിക്കപ്പെടണം, Unix പോലുള്ള ഷെല്ലിന്റെ അഭാവം makefile-ൽ പ്രശ്നങ്ങൾ ഉണ്ടാക്കും
നിയമങ്ങൾ, പ്രത്യേകിച്ച് "cd sdbm && make all" എന്ന ഫോമിന്റെ വരികൾ, കൂടാതെ ഉദ്ധരണി ഉപയോഗിക്കുന്ന എന്തും.
"RISC OS" എന്നത് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ശരിയായ പേരാണ്, എന്നാൽ $^O-യിലെ മൂല്യം "riscos" ആണ്.
(കാരണം ഞങ്ങൾ നിലവിളിക്കുന്നത് ഇഷ്ടപ്പെടുന്നില്ല).
മറ്റു perls
ലിസ്റ്റ് ചെയ്തിരിക്കുന്ന ഏതെങ്കിലും വിഭാഗങ്ങളുമായി പൊരുത്തപ്പെടാത്ത നിരവധി പ്ലാറ്റ്ഫോമുകളിലേക്ക് പേൾ പോർട്ട് ചെയ്തു
മുകളിൽ. AmigaOS, QNX, പ്ലാൻ 9, VOS എന്നിവ പോലെയുള്ള ചിലത് നന്നായി സംയോജിപ്പിച്ചിരിക്കുന്നു.
സ്റ്റാൻഡേർഡ് പേൾ സോഴ്സ് കോഡ് കിറ്റ്. നിങ്ങൾ കാണേണ്ടി വന്നേക്കാം തുറമുഖങ്ങൾ/ CPAN-നുള്ള ഡയറക്ടറി
വിവരങ്ങൾ, ഒരുപക്ഷേ ബൈനറികൾ, ഇനിപ്പറയുന്നവയ്ക്ക്: aos, Atari ST, lynxos, riscos,
നോവൽ നെറ്റ്വെയർ, ടാൻഡം ഗാർഡിയൻ, തുടങ്ങിയവ. (അതെ, ഈ OS-കളിൽ ചിലത് വീഴാനിടയുണ്ടെന്ന് ഞങ്ങൾക്കറിയാം
Unix വിഭാഗത്തിന് കീഴിൽ, എന്നാൽ ഞങ്ങൾ ഒരു സ്റ്റാൻഡേർഡ് ബോഡി അല്ല.)
"OTHER" വിഭാഗത്തിലെ ചില ഏകദേശ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പേരുകളും അവയുടെ $^O മൂല്യങ്ങളും
ഉൾപ്പെടുന്നു:
OS $^O $Config{'archname'}
------------------------------------------
അമിഗ ഡോസ് അമിഗോസ് എം68കെ-അമിഗോസ്
ഇതും കാണുക:
· അമിഗ, README.amiga (perlamiga ആയി ഇൻസ്റ്റാൾ ചെയ്തു).
നോവൽ നെറ്റ്വെയറിനായുള്ള സൗജന്യ perl5-അടിസ്ഥാനത്തിലുള്ള PERL.NLM പ്രീ കംപൈൽഡ് ബൈനറിയിലും ലഭ്യമാണ്
നിന്ന് സോഴ്സ് കോഡ് ഫോംhttp://www.novell.com/> അതുപോലെ CPAN-ൽ നിന്നും.
· പ്ലാൻ 9, README.plan9
ഫംഗ്ഷൻ നടപ്പാക്കലുകൾ
പൂർണ്ണമായും നടപ്പിലാക്കാത്തതോ അല്ലാത്തതോ ആയ ഫംഗ്ഷനുകളാണ് ചുവടെ ലിസ്റ്റ് ചെയ്തിരിക്കുന്നത്
വിവിധ പ്ലാറ്റ്ഫോമുകളിൽ വ്യത്യസ്തമായി നടപ്പിലാക്കി. ഓരോ വിവരണത്തിനും ശേഷം, ഇൻ
പരാൻതീസിസുകൾ, വിവരണം ബാധകമാകുന്ന പ്ലാറ്റ്ഫോമുകളുടെ ഒരു ലിസ്റ്റ്.
ലിസ്റ്റ് അപൂർണ്ണമായിരിക്കാം, അല്ലെങ്കിൽ ചില സ്ഥലങ്ങളിൽ തെറ്റായിപ്പോയേക്കാം. സംശയമുണ്ടെങ്കിൽ, ബന്ധപ്പെടുക
പേൾ ഉറവിട വിതരണത്തിലെ പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ട README ഫയലുകളും മറ്റേതെങ്കിലും
തന്നിരിക്കുന്ന പോർട്ടിനൊപ്പം ഡോക്യുമെന്റേഷൻ ഉറവിടങ്ങൾ.
മാത്രമല്ല, Unix-ish സിസ്റ്റങ്ങളിൽ പോലും വ്യതിയാനങ്ങൾ ഉണ്ടെന്ന് ശ്രദ്ധിക്കുക.
നിരവധി ഫംഗ്ഷനുകൾക്കായി, "കോൺഫിഗിൽ" നിന്ന് ഡിഫോൾട്ടായി എക്സ്പോർട്ടുചെയ്ത % കോൺഫിഗറിലും നിങ്ങൾക്ക് അന്വേഷിക്കാനാകും.
മൊഡ്യൂൾ. ഉദാഹരണത്തിന്, പ്ലാറ്റ്ഫോമിന് "lstat" കോൾ ഉണ്ടോ എന്ന് പരിശോധിക്കാൻ, പരിശോധിക്കുക
$Config{d_lstat}. ലഭ്യമായ വേരിയബിളുകളുടെ പൂർണ്ണമായ വിവരണത്തിനായി കോൺഫിഗറേഷൻ കാണുക.
അക്ഷരമാല സംബന്ധിച്ച ലിസ്റ്റിംഗ് of പേൾ പ്രവർത്തനങ്ങൾ
-X "-w" എന്നത് റീഡ്-ഒൺലി ഫയൽ ആട്രിബ്യൂട്ട് (FILE_ATTRIBUTE_READONLY) മാത്രം പരിശോധിക്കുന്നു, അത്
ഡയറക്ടറി ഇല്ലാതാക്കാൻ കഴിയുമോ എന്ന് നിർണ്ണയിക്കുന്നു, അത് എഴുതാൻ കഴിയുമോ എന്നല്ല.
വിവേചനാധികാരം നിരസിച്ചില്ലെങ്കിൽ ഡയറക്ടറികൾക്ക് എല്ലായ്പ്പോഴും വായിക്കാനും എഴുതാനുമുള്ള ആക്സസ് ഉണ്ടായിരിക്കും
ആക്സസ് കൺട്രോൾ ലിസ്റ്റുകൾ (DACLs). (Win32)
"-r", "-w", "-x", "-o" എന്നിവ ഫയൽ ആക്സസ് ചെയ്യാനാകുമോ എന്ന് പറയുക, അത് ആക്സസ് ചെയ്യാൻ കഴിയില്ല.
UIC അടിസ്ഥാനമാക്കിയുള്ള ഫയൽ പരിരക്ഷകൾ പ്രതിഫലിപ്പിക്കുന്നു. (വിഎംഎസ്)
ഒരു ഓപ്പൺ ഫയലിൽ "-s" എന്ന പേരിലുള്ളത് ഡിസ്കിൽ റിസർവ് ചെയ്തിരിക്കുന്ന ഇടം തിരികെ നൽകും
നിലവിലെ വ്യാപ്തി. തുറന്ന ഫയൽ ഹാൻഡിൽ "-s" നിലവിലെ വലുപ്പം നൽകുന്നു.
(RISC OS)
"-R", "-W", "-X", "-O" എന്നിവ "-r", "-w", "-x", "-o" എന്നിവയിൽ നിന്ന് വേർതിരിച്ചറിയാൻ കഴിയില്ല. (Win32,
VMS, RISC OS)
"-g", "-k", "-l", "-u", "-A" എന്നിവ പ്രത്യേകിച്ച് അർത്ഥപൂർണ്ണമല്ല. (Win32, VMS,
RISC OS)
"-p" പ്രത്യേകിച്ച് അർത്ഥവത്തായതല്ല. (VMS, RISC OS)
വ്യക്തമായ ഡയറക്ടറി ഇല്ലാതെ ഒരു ഉപകരണ സ്പെക്ക് പാസ്സാക്കിയാൽ "-d" ശരിയാണ്. (വിഎംഎസ്)
"-x" (അല്ലെങ്കിൽ "-X") ഒരു ഫയൽ എക്സിക്യൂട്ടബിൾ സഫിക്സുകളിലൊന്നിൽ അവസാനിക്കുന്നുണ്ടോ എന്ന് നിർണ്ണയിക്കുന്നു. "-എസ്"
അർത്ഥശൂന്യമാണ്. (Win32)
ഒരു ഫയലിന് എക്സിക്യൂട്ടബിൾ ഫയൽ തരം ഉണ്ടോ എന്ന് "-x" (അല്ലെങ്കിൽ "-X") നിർണ്ണയിക്കുന്നു. (RISC OS)
ടൈമറുകൾ ഉപയോഗിച്ചാണ് അലാറം അനുകരിക്കുന്നത്, പേളിന് താൽപ്പര്യമുള്ളപ്പോഴെല്ലാം അത് വ്യക്തമായി പോൾ ചെയ്യണം
"സുരക്ഷിത സിഗ്നലുകൾ" അയയ്ക്കുക, അതിനാൽ സിസ്റ്റം കോളുകൾ തടയുന്നത് തടസ്സപ്പെടുത്താൻ കഴിയില്ല.
(Win32)
atan2 വിവിധ CPU-കൾ, ഗണിത ലൈബ്രറികൾ, കംപൈലറുകൾ, സ്റ്റാൻഡേർഡുകൾ എന്നിവയിലെ പ്രശ്നങ്ങൾ കാരണം, ഫലങ്ങൾ
"atan2()" എന്നതിനായി മുകളിൽ പറഞ്ഞവയുടെ ഏതെങ്കിലും സംയോജനത്തെ ആശ്രയിച്ച് വ്യത്യാസപ്പെടാം. പേൾ ശ്രമങ്ങൾ
ലഭിച്ച ഫലങ്ങൾക്കായി ഓപ്പൺ ഗ്രൂപ്പ്/ഐഇഇഇ മാനദണ്ഡങ്ങൾ പാലിക്കുന്നതിന്
"atan2()", എന്നാൽ Perl പ്രവർത്തിപ്പിക്കുന്ന സിസ്റ്റം അനുവദിക്കുന്നില്ലെങ്കിൽ പ്രശ്നം നിർബന്ധമാക്കാൻ കഴിയില്ല
അത്. (Tru64, HP-UX 10.20)
"atan2()" എന്നതിനായുള്ള മാനദണ്ഡങ്ങളുടെ നിലവിലെ പതിപ്പ് ഇവിടെ ലഭ്യമാണ്
<http://www.opengroup.org/onlinepubs/009695399/functions/atan2.html>.
ബിൻമോഡ് അർത്ഥരഹിതമാണ്. (RISC OS)
ഫയൽ വീണ്ടും തുറക്കുകയും പോയിന്റർ പുനഃസ്ഥാപിക്കുകയും ചെയ്യുന്നു; ഫംഗ്ഷൻ പരാജയപ്പെടുകയാണെങ്കിൽ, അണ്ടർലൈയിംഗ് ഫയൽഹാൻഡിൽ ആയിരിക്കാം
അടച്ചു, അല്ലെങ്കിൽ പോയിന്റർ മറ്റൊരു സ്ഥാനത്തായിരിക്കാം. (വിഎംഎസ്)
"ടെൽ" നൽകുന്ന മൂല്യം കോളിനും ഫയൽ ഹാൻഡിലിനും ശേഷം ബാധിച്ചേക്കാം
ഫ്ലഷ് ചെയ്തേക്കാം. (Win32)
chmod "ഉടമ" റീഡ്-റൈറ്റ് ആക്സസ്, "ഗ്രൂപ്പ്", "മറ്റ്" ബിറ്റുകൾ എന്നിവ മാറ്റുന്നതിന് മാത്രം നല്ലതാണ്
അർത്ഥശൂന്യമായ. (Win32)
"ഉടമ", "മറ്റുള്ള" റീഡ്-റൈറ്റ് ആക്സസ് എന്നിവ മാറ്റുന്നതിന് മാത്രം നല്ലത്. (RISC OS)
ആക്സസ് അനുമതികൾ VOS ആക്സസ് കൺട്രോൾ ലിസ്റ്റ് മാറ്റങ്ങളിലേക്ക് മാപ്പ് ചെയ്തിരിക്കുന്നു. (VOS)
യഥാർത്ഥ അനുമതികൾ സജ്ജീകരിച്ചിരിക്കുന്നത് സിസ്റ്റത്തിലെ "CYGWIN" മൂല്യത്തെ ആശ്രയിച്ചിരിക്കുന്നു
പരിസ്ഥിതി ക്രമീകരണങ്ങൾ. (സിഗ്വിൻ)
ചില സ്ഥലങ്ങളിൽ എക്സിക് ബിറ്റ് സജ്ജീകരിക്കുന്നു (സാധാരണയായി / എസ് ഡി കാർഡ്) സത്യമായി തിരിച്ചുവരും എന്നാൽ
യഥാർത്ഥത്തിൽ ബിറ്റ് സജ്ജമാക്കിയിട്ടില്ല. (ആൻഡ്രോയിഡ്)
chown നടപ്പിലാക്കിയിട്ടില്ല. (Win32, പ്ലാൻ 9, RISC OS)
ഒന്നും ചെയ്യുന്നില്ല, പക്ഷേ പരാജയപ്പെടില്ല. (Win32)
അൽപ്പം രസകരം, കാരണം VOS-ന്റെ ഉടമസ്ഥാവകാശം അൽപ്പം രസകരമാണ് (VOS).
chroot നടപ്പിലാക്കിയിട്ടില്ല. (Win32, VMS, പ്ലാൻ 9, RISC OS, VOS)
perl നിർമ്മിക്കുമ്പോൾ ലൈബ്രറിയോ ഉറവിടമോ നൽകിയില്ലെങ്കിൽ crypt ലഭ്യമായേക്കില്ല.
(Win32)
നടപ്പിലാക്കാത്ത. (ആൻഡ്രോയിഡ്)
dbmclose
നടപ്പിലാക്കാത്ത. (VMS, പ്ലാൻ 9, VOS)
dbmopen നടപ്പിലാക്കിയിട്ടില്ല. (VMS, പ്ലാൻ 9, VOS)
ഡംപ് ഉപയോഗപ്രദമല്ല. (RISC OS)
പിന്തുണയ്ക്കുന്നില്ല. (സിഗ്വിൻ, വിൻ32)
VMS ഡീബഗ്ഗർ അഭ്യർത്ഥിക്കുന്നു. (വിഎംഎസ്)
പരോക്ഷ ഒബ്ജക്റ്റ് വാക്യഘടന ("എക്സെക് പ്രോഗ്രാം ലിസ്റ്റ്") ഉപയോഗിക്കാതെ എക്സിക് "എക്സെക് ലിസ്റ്റ്"
ആദ്യത്തെ "സ്പാൺ()" പരാജയപ്പെട്ടാൽ ഷെൽ പരീക്ഷിച്ചുനോക്കൂ. (Win32)
ചില പ്ലാറ്റ്ഫോമുകളിൽ ഔട്ട്പുട്ട് ഹാൻഡിലുകൾ സ്വയമേവ ഫ്ലഷ് ചെയ്യുന്നില്ല. (SunOS, Solaris,
HP-UX)
പിന്തുണയ്ക്കുന്നില്ല. (സിംബിയൻ ഒഎസ്)
എക്സിറ്റ് മാപ്പിംഗ് വഴി Unix "എക്സിറ്റ്()" (ഒരു പിശക് സൂചിപ്പിക്കാൻ "എക്സിറ്റ് 1" പരിഗണിക്കുന്നു) അനുകരിക്കുന്നു
1 മുതൽ "SS$_ABORT" (44). ഈ സ്വഭാവം പ്രാഗ്മ "ഉപയോഗം" ഉപയോഗിച്ച് അസാധുവാക്കപ്പെട്ടേക്കാം
vmsish 'എക്സിറ്റ്'". CRTL-ന്റെ "എക്സിറ്റ്()" ഫംഗ്ഷൻ പോലെ, "എക്സിറ്റ് 0" എന്നതും മാപ്പ് ചെയ്തിരിക്കുന്നു
"SS$_NORMAL" (1) എന്നതിന്റെ എക്സിറ്റ് സ്റ്റാറ്റസ്; ഈ മാപ്പിംഗ് അസാധുവാക്കാൻ കഴിയില്ല. മറ്റെന്തെങ്കിലും
"എക്സിറ്റ്()" എന്നതിലേക്കുള്ള ആർഗ്യുമെന്റ് നേരിട്ട് പേളിന്റെ എക്സിറ്റ് സ്റ്റാറ്റസായി ഉപയോഗിക്കുന്നു. VMS-ൽ, ഒഴികെ
ഭാവിയിലെ POSIX_EXIT മോഡ് പ്രവർത്തനക്ഷമമാക്കി, എക്സിറ്റ് കോഡ് എല്ലായ്പ്പോഴും സാധുവായ VMS എക്സിറ്റ് ആയിരിക്കണം
കോഡ്, ഒരു ജനറിക് നമ്പറല്ല. POSIX_EXIT മോഡ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ഒരു സാധാരണ
C ലൈബ്രറി _POSIX_EXIT മാക്രോയ്ക്ക് അനുയോജ്യമായ രീതിയിൽ നമ്പർ എൻകോഡ് ചെയ്യും
അതുവഴി മറ്റ് പ്രോഗ്രാമുകൾക്ക് ഡീകോഡ് ചെയ്യാൻ കഴിയും, പ്രത്യേകിച്ച് സിയിൽ എഴുതിയവ
GNV പാക്കേജ്. (വിഎംഎസ്)
"exit()" ഫയൽ പോയിന്ററുകൾ പുനഃസജ്ജമാക്കുന്നു, ഇത് ഒരു ചൈൽഡ് പ്രോസസ്സിൽ നിന്ന് വിളിക്കുമ്പോൾ ഒരു പ്രശ്നമാണ്
("BEGIN" എന്നതിൽ "ഫോർക്ക്()") സൃഷ്ടിച്ചത്. "POSIX::_exit" ഉപയോഗിക്കുന്നതാണ് ഒരു പരിഹാരമാർഗ്ഗം.
(സോളാരിസ്)
$Config{archname} =~ /\bsolaris\b/ ഒഴികെ പുറത്തുകടക്കുക;
POSIX ഉം POSIX ഉം ആവശ്യമാണ്::_പുറത്ത്(0);
fcntl നടപ്പിലാക്കിയിട്ടില്ല. (Win32)
VMS-ന്റെ പതിപ്പിനെ അടിസ്ഥാനമാക്കി ചില പ്രവർത്തനങ്ങൾ ലഭ്യമാണ്. (വിഎംഎസ്)
ഫ്ലോക്ക് നടപ്പിലാക്കിയിട്ടില്ല (VMS, RISC OS, VOS).
ഫോർക്ക് നടപ്പിലാക്കിയിട്ടില്ല. (AmigaOS, RISC OS, VMS)
ഒന്നിലധികം വ്യാഖ്യാതാക്കൾ ഉപയോഗിച്ച് അനുകരിക്കുന്നു. perlfork കാണുക. (Win32)
ചില പ്ലാറ്റ്ഫോമുകളിൽ ഔട്ട്പുട്ട് ഹാൻഡിലുകൾ സ്വയമേവ ഫ്ലഷ് ചെയ്യുന്നില്ല. (SunOS, Solaris,
HP-UX)
ലോഗിൻ
നടപ്പിലാക്കാത്ത. (RISC OS)
getpgrp നടപ്പിലാക്കിയിട്ടില്ല. (Win32, VMS, RISC OS)
getppid നടപ്പിലാക്കിയിട്ടില്ല. (Win32, RISC OS)
മുൻഗണന
നടപ്പിലാക്കാത്ത. (Win32, VMS, RISC OS, VOS)
getpwnam
നടപ്പിലാക്കാത്ത. (Win32)
ഉപയോഗപ്രദമല്ല. (RISC OS)
ഗെറ്റ്ഗ്രണം
നടപ്പിലാക്കാത്ത. (Win32, VMS, RISC OS)
getnetbyname
നടപ്പിലാക്കാത്ത. (Android, Win32, പ്ലാൻ 9)
getpwiid
നടപ്പിലാക്കാത്ത. (Win32)
ഉപയോഗപ്രദമല്ല. (RISC OS)
ഗെറ്റ്ഗ്രിഡ്
നടപ്പിലാക്കാത്ത. (Win32, VMS, RISC OS)
getnetbyaddr
നടപ്പിലാക്കാത്ത. (Android, Win32, പ്ലാൻ 9)
പ്രോട്ടോബൈനമ്പർ നേടുക
നടപ്പിലാക്കാത്ത. (ആൻഡ്രോയിഡ്)
getservbyport
നേടുക
നടപ്പിലാക്കാത്ത. (Android, Win32)
ഗെറ്റ്ഗ്രന്റ്
നടപ്പിലാക്കാത്ത. (Android, Win32, VMS)
gethostbyname
"gethostbyname('localhost')" എല്ലായിടത്തും പ്രവർത്തിക്കില്ല: നിങ്ങൾ ഉപയോഗിക്കേണ്ടി വന്നേക്കാം
"gethostbyname('127.0.0.1')". (ഐറിക്സ് 5)
ഗെറ്റ്ഹോസ്റ്റന്റ്
നടപ്പിലാക്കാത്ത. (Win32)
ഗെറ്റ്നെറ്റന്റ്
നടപ്പിലാക്കാത്ത. (Android, Win32, പ്ലാൻ 9)
ഗെറ്റ് പ്രോട്ടോൺ
നടപ്പിലാക്കാത്ത. (Android, Win32, പ്ലാൻ 9)
വേലക്കാരൻ
നടപ്പിലാക്കാത്ത. (Win32, പ്ലാൻ 9)
ആഗ്രഹിച്ചു നടപ്പാക്കിയിട്ടില്ല. (ആൻഡ്രോയിഡ്)
സെറ്റോസ്റ്റന്റ്
നടപ്പിലാക്കാത്ത. (Android, Win32, പ്ലാൻ 9, RISC OS)
സെറ്റ്നെറ്റന്റ്
നടപ്പിലാക്കാത്ത. (Win32, പ്ലാൻ 9, RISC OS)
സെറ്റ്പ്രോട്ടോന്റ്
നടപ്പിലാക്കാത്ത. (Android, Win32, പ്ലാൻ 9, RISC OS)
സേവകൻ
നടപ്പിലാക്കാത്ത. (പ്ലാൻ 9, Win32, RISC OS)
അവസാനം പോയി
നടപ്പിലാക്കാത്ത. (Win32)
ഒന്നുകിൽ നടപ്പിലാക്കിയിട്ടില്ല അല്ലെങ്കിൽ ഒരു നോ-ഓപ്. (ആൻഡ്രോയിഡ്)
അവസാനം
നടപ്പിലാക്കാത്ത. (Android, RISC OS, VMS, Win32)
എൻഡോസ്റ്റന്റ്
നടപ്പിലാക്കാത്ത. (Android, Win32)
അവസാനം
നടപ്പിലാക്കാത്ത. (Android, Win32, പ്ലാൻ 9)
എൻഡ്പ്രോട്ടോന്റ്
നടപ്പിലാക്കാത്ത. (Android, Win32, പ്ലാൻ 9)
അന്ത്യസേവകൻ
നടപ്പിലാക്കാത്ത. (പ്ലാൻ 9, Win32)
getsockopt SOCKET, LEVEL, OPTNAME
നടപ്പിലാക്കാത്ത. (പ്ലാൻ 9)
glob മിക്ക പ്ലാറ്റ്ഫോമുകളിലും "ഫയൽ::ഗ്ലോബ്" വിപുലീകരണം വഴിയാണ് ഈ ഓപ്പറേറ്റർ നടപ്പിലാക്കുന്നത്.
പോർട്ടബിലിറ്റി വിവരങ്ങൾക്ക് ഫയൽ::Glob കാണുക.
gmtime സിദ്ധാന്തത്തിൽ, "gmtime()" -2**63 മുതൽ 2**63-1 വരെ വിശ്വസനീയമാണ്. എന്നിരുന്നാലും, ജോലി കാരണം
നടപ്പിലാക്കുമ്പോൾ ഫ്ലോട്ടിംഗ് പോയിന്റ് നമ്പറുകൾ ഉപയോഗിക്കുന്നു, അത് മാറും
സമയം വലുതാകുമ്പോൾ കൃത്യമല്ല. ഇതൊരു ബഗ് ആണ്, ഇത് പരിഹരിക്കപ്പെടും
ഭാവി.
VOS-ൽ, സമയ മൂല്യങ്ങൾ 32-ബിറ്റ് അളവുകളാണ്.
ioctl FILEHANDLE,FUNCTION,SCALAR
നടപ്പിലാക്കാത്ത. (വിഎംഎസ്)
സോക്കറ്റ് ഹാൻഡിലുകൾക്ക് മാത്രം ലഭ്യം, "ioctlsocket()" വിളിക്കുന്നത് അത് ചെയ്യുന്നു
Winsock API ചെയ്യുന്നു. (Win32)
സോക്കറ്റ് ഹാൻഡിലുകൾക്ക് മാത്രം ലഭ്യമാണ്. (RISC OS)
കൊല്ലുക നടപ്പിലാക്കിയിട്ടില്ല, അതിനാൽ കളങ്കപരിശോധനയ്ക്ക് ഉപയോഗപ്രദമല്ല. (RISC OS)
"kill()" ന് "raise()" എന്നതിന്റെ അർത്ഥം ഇല്ല, അതായത് അത് ഒരു സിഗ്നൽ അയക്കുന്നില്ല
Unix പ്ലാറ്റ്ഫോമുകളിൽ ചെയ്യുന്നതുപോലെ തിരിച്ചറിഞ്ഞ പ്രക്രിയ. പകരം "കൊല്ലുക($sig, $pid)"
$pid വഴി തിരിച്ചറിഞ്ഞ പ്രക്രിയ അവസാനിപ്പിക്കുകയും, എക്സിറ്റ് ഉപയോഗിച്ച് ഉടൻ പുറത്തുകടക്കുകയും ചെയ്യുന്നു
നില $sig. Unix-ലെ പോലെ, $sig 0 ആണെങ്കിൽ, നിർദ്ദിഷ്ട പ്രോസസ്സ് നിലവിലുണ്ടെങ്കിൽ, അത്
യഥാർത്ഥത്തിൽ അത് അവസാനിപ്പിക്കാതെ സത്യമായി തിരികെ നൽകുന്നു. (Win32)
"kill(-9, $pid)" $pid നിർദ്ദേശിച്ചിരിക്കുന്ന പ്രക്രിയ അവസാനിപ്പിക്കും കൂടാതെ ആവർത്തിച്ച് എല്ലാം
അതിന്റെ ഉടമസ്ഥതയിലുള്ള ശിശു പ്രക്രിയകൾ. ഇത് യുണിക്സ് സെമാന്റിക്സിൽ നിന്ന് വ്യത്യസ്തമാണ്
പ്രക്രിയയുടെ അതേ പ്രോസസ് ഗ്രൂപ്പിലെ എല്ലാ പ്രക്രിയകളിലേക്കും സിഗ്നൽ കൈമാറും
$pid വ്യക്തമാക്കിയത്. (Win32)
പ്രോസസ്സ് ഐഡന്റിഫിക്കേഷൻ നമ്പർ 0 അല്ലെങ്കിൽ നെഗറ്റീവ് നമ്പറുകൾ പിന്തുണയ്ക്കുന്നില്ല. (വിഎംഎസ്)
ലിങ്ക് നടപ്പിലാക്കിയിട്ടില്ല. (RISC OS, VOS)
ഹാർഡ് ലിങ്കുകൾ അത്ര കഠിനമല്ലാത്തതിനാൽ ലിങ്കുകളുടെ എണ്ണം അപ്ഡേറ്റ് ചെയ്തിട്ടില്ല (അവ അടുക്കിയിരിക്കുന്നു
ഹാർഡ്, സോഫ്റ്റ് ലിങ്കുകൾക്കിടയിലുള്ള പകുതി വഴി). (AmigaOS)
NTFS-ന് കീഴിൽ മാത്രം Win32-ൽ ഹാർഡ് ലിങ്കുകൾ നടപ്പിലാക്കുന്നു. അവർ തദ്ദേശീയമായി പിന്തുണയ്ക്കുന്നു
വിൻഡോസ് 2000-ലും അതിനുശേഷവും. വിൻഡോസ് എൻടിയിൽ അവ വിൻഡോസ് ഉപയോഗിച്ചാണ് നടപ്പിലാക്കുന്നത്
POSIX സബ്സിസ്റ്റം പിന്തുണയ്ക്കും പേൾ പ്രോസസ്സിനും അഡ്മിനിസ്ട്രേറ്ററോ ബാക്കപ്പോ ആവശ്യമാണ്
ഹാർഡ് ലിങ്കുകൾ സൃഷ്ടിക്കാൻ ഓപ്പറേറ്റർക്കുള്ള പ്രത്യേകാവകാശങ്ങൾ.
64 ബിറ്റ് OpenVMS 8.2-ലും അതിനുശേഷമുള്ള പതിപ്പുകളിലും ലഭ്യമാണ്. (വിഎംഎസ്)
പ്രാദേശിക സമയം
പ്രാദേശിക സമയം() "gmtime" യുടെ അതേ ശ്രേണി ഉണ്ട്, എന്നാൽ സമയ മേഖല നിയമങ്ങൾ മാറ്റുന്നതിനാൽ
ചരിത്രപരവും ഭാവിയുമുള്ള സമയങ്ങളിലെ കൃത്യത കുറഞ്ഞേക്കാം, പക്ഷേ സാധാരണയായി അതിൽ കൂടുതലാകില്ല
ഒരു മണിക്കൂർ.
lstat നടപ്പിലാക്കിയിട്ടില്ല. (RISC OS)
റിട്ടേൺ മൂല്യങ്ങൾ (പ്രത്യേകിച്ച് ഉപകരണത്തിനും ഐനോഡിനും) വ്യാജമായിരിക്കാം. (Win32)
msgctl
സന്ദേശം
msgsnd
msgrcv നടപ്പിലാക്കിയിട്ടില്ല. (Android, Win32, VMS, പ്ലാൻ 9, RISC OS, VOS)
"|-", "-|" എന്നിവയിലേക്ക് തുറക്കുക പിന്തുണയ്ക്കുന്നില്ല. (Win32, RISC OS)
ഒരു പ്രോസസ്സ് തുറക്കുന്നത് ചില പ്ലാറ്റ്ഫോമുകളിൽ ഔട്ട്പുട്ട് ഹാൻഡിലുകൾ സ്വയമേവ ഫ്ലഷ് ചെയ്യുന്നില്ല.
(SunOS, Solaris, HP-UX)
വായന ലിങ്ക്
നടപ്പിലാക്കാത്ത. (Win32, VMS, RISC OS)
പേരുമാറ്റുക വ്യത്യസ്ത ലോജിക്കൽ വോള്യങ്ങളിൽ ഡയറക്ടറികൾക്കിടയിൽ ഡയറക്ടറികൾ നീക്കാൻ കഴിയില്ല. (Win32)
rewinddir
ഡയറക്ടറി സ്ട്രീം വീണ്ടും വായിക്കാൻ "readdir()" കാരണമാകില്ല. എൻട്രികൾ ഇതിനകം
"rewinddir()" കോൾ ഒരു കാഷെയിൽ നിന്ന് തിരികെ വരുന്നതിന് മുമ്പ് വായിക്കുക
ബഫർ. (Win32)
സോക്കറ്റുകളിൽ മാത്രം നടപ്പിലാക്കുക തിരഞ്ഞെടുക്കുക. (Win32, VMS)
സോക്കറ്റുകളിൽ മാത്രം വിശ്വസനീയമാണ്. (RISC OS)
"തിരഞ്ഞെടുക്കുക FILEHANDLE" ഫോം പൊതുവെ പോർട്ടബിൾ ആണെന്നത് ശ്രദ്ധിക്കുക.
smctl
സെംഗെറ്റ്
സെമോപ്പ് നടപ്പിലാക്കിയിട്ടില്ല. (Android, Win32, VMS, RISC OS)
സെറ്റ്ഗ്രന്റ്
നടപ്പിലാക്കാത്ത. (Android, VMS, Win32, RISC OS)
setpgrp നടപ്പിലാക്കിയിട്ടില്ല. (Win32, VMS, RISC OS, VOS)
മുൻഗണന
നടപ്പിലാക്കാത്ത. (Win32, VMS, RISC OS, VOS)
സജ്ജീകരിച്ചു
നടപ്പിലാക്കാത്ത. (Android, Win32, RISC OS)
setsockopt
നടപ്പിലാക്കാത്ത. (പ്ലാൻ 9)
shmctl
shmget
shmread
shmwrite
നടപ്പിലാക്കാത്ത. (Android, Win32, VMS, RISC OS)
സ്ലീപ്പ് എമുലേറ്റ് ചെയ്യുന്നത് സിൻക്രൊണൈസേഷൻ ഫംഗ്ഷനുകൾ ഉപയോഗിച്ച് തടസ്സപ്പെടുത്താം
"അലാറം()", കൂടാതെ പരമാവധി 4294967 സെക്കൻഡിലേക്ക് പരിമിതപ്പെടുത്തിയിരിക്കുന്നു, ഏകദേശം 49 ദിവസം.
(Win32)
സോക്കറ്റ്മാർക്ക്
സോക്കറ്റ് ഫംഗ്ഷനുകളിൽ താരതമ്യേന അടുത്തിടെയുള്ള കൂട്ടിച്ചേർക്കൽ, ഇത് പോലും നടപ്പിലാക്കിയേക്കില്ല
Unix പ്ലാറ്റ്ഫോമുകൾ.
സോക്കറ്റ്പെയർ
നടപ്പിലാക്കാത്ത. (RISC OS)
64 ബിറ്റ് OpenVMS 8.2-ലും അതിനുശേഷമുള്ള പതിപ്പുകളിലും ലഭ്യമാണ്. (വിഎംഎസ്)
rdev, blksize, അല്ലെങ്കിൽ ബ്ലോക്കുകൾ ഇല്ലാത്ത സ്റ്റാറ്റ് പ്ലാറ്റ്ഫോമുകൾ ഇവയെ '' എന്ന് തിരികെ നൽകും, അതിനാൽ
ഈ ഫീൽഡുകളുടെ സംഖ്യാപരമായ താരതമ്യം അല്ലെങ്കിൽ കൃത്രിമത്വം 'സംഖ്യയല്ല'
മുന്നറിയിപ്പുകൾ.
ctime UFS-ൽ (Mac OS X) പിന്തുണയ്ക്കുന്നില്ല.
ഐനോഡ് മാറ്റ സമയത്തിനുപകരം ctime എന്നത് സൃഷ്ടിക്കുന്ന സമയമാണ് (Win32).
ഉപകരണവും ഐനോഡും അർത്ഥപൂർണ്ണമല്ല. (Win32)
ഉപകരണവും ഐനോഡും വിശ്വസനീയമായിരിക്കണമെന്നില്ല. (വിഎംഎസ്)
mtime, atime, ctime എന്നിവയെല്ലാം അവസാന പരിഷ്ക്കരണ സമയം നൽകുന്നു. ഉപകരണവും ഐനോഡും
വിശ്വസനീയമായിരിക്കണമെന്നില്ല. (RISC OS)
dev, rdev, blksize, ബ്ലോക്കുകൾ എന്നിവ ലഭ്യമല്ല. inode അർത്ഥപൂർണ്ണമല്ല
ഒരേ ഫയലിലെ സ്റ്റാറ്റ് കോളുകൾക്കിടയിൽ വ്യത്യാസമുണ്ടാകും. (os2)
"stat("foo")" ചെയ്യുമ്പോൾ cygwin-ന്റെ ചില പതിപ്പുകൾ, അത് കണ്ടെത്തിയില്ലെങ്കിൽ പിന്നീട്
"stat("foo.exe")" (സിഗ്വിൻ)
Win32-ൽ "stat()" ലിങ്കിന്റെ എണ്ണവും അപ്ഡേറ്റും നിർണ്ണയിക്കാൻ ഫയൽ തുറക്കേണ്ടതുണ്ട്
ഹാർഡ് ലിങ്കുകൾ വഴി മാറ്റിയിരിക്കാവുന്ന ആട്രിബ്യൂട്ടുകൾ. ക്രമീകരണം
"${^WIN32_SLOPPY_STAT}" ഒരു യഥാർത്ഥ മൂല്യത്തിലേക്ക് ഇത് നടപ്പിലാക്കാതെ "stat()" വേഗത്തിലാക്കുന്നു
ഓപ്പറേഷൻ. (Win32)
സിംലിങ്ക് നടപ്പിലാക്കിയിട്ടില്ല. (Win32, RISC OS)
64 ബിറ്റ് വിഎംഎസ് 8.3-ൽ നടപ്പിലാക്കി. VMS-ന് പ്രതീകാത്മക ലിങ്ക് Unix-ൽ ഉണ്ടായിരിക്കണം
സാധുവായ ഒരു പാതയിലേക്ക് പരിഹരിക്കാനാണ് ഉദ്ദേശിക്കുന്നതെങ്കിൽ വാക്യഘടന.
syscal നടപ്പിലാക്കിയിട്ടില്ല. (Win32, VMS, RISC OS, VOS)
sysopen പരമ്പരാഗത "0", "1", "2" മോഡുകൾ വ്യത്യസ്ത സംഖ്യകൾ ഉപയോഗിച്ച് നടപ്പിലാക്കുന്നു
ചില സിസ്റ്റങ്ങളിലെ മൂല്യങ്ങൾ. "Fcntl" കയറ്റുമതി ചെയ്ത ഫ്ലാഗുകൾ (O_RDONLY, O_WRONLY,
O_RDWR) എല്ലായിടത്തും പ്രവർത്തിക്കണം. (Mac OS, OS/390)
സിസ്റ്റം ഒരു ഒപ്റ്റിമൈസേഷൻ എന്ന നിലയിൽ, $ENV{PERL5SHELL}-ൽ വ്യക്തമാക്കിയിട്ടുള്ള കമാൻഡ് ഷെല്ലിലേക്ക് വിളിക്കാൻ പാടില്ല.
"സിസ്റ്റം(1, @args)" ഒരു ബാഹ്യപ്രക്രിയയ്ക്ക് രൂപംനൽകുകയും ഉടൻതന്നെ അതിന്റെ പ്രക്രിയ തിരികെ നൽകുകയും ചെയ്യുന്നു
ഡിസൈനേറ്റർ, അത് അവസാനിക്കുന്നതുവരെ കാത്തിരിക്കാതെ. റിട്ടേൺ മൂല്യം ഉപയോഗിച്ചേക്കാം
തുടർന്ന് "കാത്തിരിക്കുക" അല്ലെങ്കിൽ "വെയ്റ്റ്പിഡ്". ഒരു ഉപപ്രോസസ് "സ്പാൺ()" ചെയ്യുന്നതിൽ പരാജയപ്പെടുന്നു
$ സജ്ജീകരിച്ച് സൂചിപ്പിച്ചോ? "255 << 8" വരെ. $? Unix-ന് അനുയോജ്യമായ രീതിയിൽ സജ്ജീകരിച്ചിരിക്കുന്നു
(അതായത്, ഉപപ്രോസസ്സിന്റെ എക്സിറ്റ് സ്റ്റാറ്റസ് ""$? " 8">> എന്നതിൽ വിവരിച്ചിരിക്കുന്നതുപോലെ ലഭിക്കുന്നു.
ഡോക്യുമെന്റേഷൻ). (Win32)
മെറ്റാക്യാരാക്ടറുകൾ പ്രോസസ്സ് ചെയ്യാൻ ഷെല്ലില്ല, കൂടാതെ നേറ്റീവ് സ്റ്റാൻഡേർഡ് എ പാസ്സാണ്
സ്പോൺഡ് പ്രോഗ്രാമിലേക്ക് "\n" "\r" അല്ലെങ്കിൽ "\0" അവസാനിപ്പിച്ച കമാൻഡ് ലൈൻ. റീഡയറക്ഷൻ
"> foo" പോലുള്ളവ നടപ്പിലാക്കുന്നത് (എങ്കിൽ) സ്പോൺഡ് റൺ ടൈം ലൈബ്രറിയാണ്
പ്രോഗ്രാം. "സിസ്റ്റം" പട്ടിക Unix എമുലേഷൻ ലൈബ്രറിയുടെ "exec" എമുലേഷൻ എന്ന് വിളിക്കും,
ഇതിൽ പ്രാബല്യത്തിലുള്ള stdin, stdout, stderr എന്നിവയുടെ അനുകരണം നൽകാൻ ശ്രമിക്കുന്നു
രക്ഷിതാവ്, ചൈൽഡ് പ്രോഗ്രാം നൽകുമ്പോൾ അനുകരണത്തിന്റെ അനുയോജ്യമായ പതിപ്പ് ഉപയോഗിക്കുന്നു
ലൈബ്രറി. സ്കെയിലർ നേറ്റീവ് കമാൻഡ് ലൈനിലേക്ക് നേരിട്ട് വിളിക്കും, അത്തരം അനുകരണങ്ങളൊന്നുമില്ല
ഒരു ചൈൽഡ് യുണിക്സ് പ്രോഗ്രാം നിലവിലുണ്ടാകും. മൈലേജ് ഉദ്ദേശിക്കുന്ന വ്യത്യാസപ്പെടുന്നു. (RISC OS)
പരോക്ഷ ഒബ്ജക്റ്റ് വാക്യഘടന ഉപയോഗിക്കാതെ "സിസ്റ്റം ലിസ്റ്റ്" ("സിസ്റ്റം പ്രോഗ്രാം ലിസ്റ്റ്")
ആദ്യത്തെ "സ്പാൺ()" പരാജയപ്പെടുകയാണെങ്കിൽ ഷെൽ പരീക്ഷിച്ചുനോക്കിയേക്കാം. (Win32)
ചില പ്ലാറ്റ്ഫോമുകളിൽ ഔട്ട്പുട്ട് ഹാൻഡിലുകൾ സ്വയമേവ ഫ്ലഷ് ചെയ്യുന്നില്ല. (SunOS, Solaris,
HP-UX)
റിട്ടേൺ മൂല്യം POSIX പോലെയാണ് (8 ബിറ്റുകൾ ഉപയോഗിച്ച് മാറ്റി), ഇത് ഇടം മാത്രം അനുവദിക്കുന്നു
നേറ്റീവ് 32-ബിറ്റ് കണ്ടീഷൻ കോഡിന്റെ തീവ്രത ബിറ്റുകളിൽ നിന്ന് ഉരുത്തിരിഞ്ഞ ഒരു നിർമ്മിത മൂല്യം
("vmsish 'status' ഉപയോഗിക്കുക" അസാധുവാക്കിയില്ലെങ്കിൽ). നേറ്റീവ് കണ്ടീഷൻ കോഡ് ഒന്നാണെങ്കിൽ
ഒരു POSIX മൂല്യം എൻകോഡ് ചെയ്തിരിക്കുന്നു, എക്സ്ട്രാക്റ്റുചെയ്യാൻ POSIX മൂല്യം ഡീകോഡ് ചെയ്യും
പ്രതീക്ഷിക്കുന്ന എക്സിറ്റ് മൂല്യം. കൂടുതൽ വിവരങ്ങൾക്ക് "$?" കാണുക perlvms ൽ. (വിഎംഎസ്)
പറഞ്ഞു നടപ്പാക്കിയിട്ടില്ല. (ആൻഡ്രോയിഡ്)
സമയം "സഞ്ചിത" സമയങ്ങൾ വ്യാജമായിരിക്കും. Windows NT അല്ലെങ്കിൽ Windows ഒഴികെ മറ്റെന്തെങ്കിലും
2000, "സിസ്റ്റം" സമയം വ്യാജമായിരിക്കും, കൂടാതെ "ഉപയോക്താവ്" സമയം യഥാർത്ഥത്തിൽ തിരിച്ചെത്തിയ സമയമാണ്.
സി റൺടൈം ലൈബ്രറിയിലെ "ക്ലോക്ക്()" ഫംഗ്ഷൻ വഴി. (Win32)
ഉപയോഗപ്രദമല്ല. (RISC OS)
വെട്ടിച്ചുരുക്കുക
നടപ്പിലാക്കാത്ത. (VMS-ന്റെ പഴയ പതിപ്പുകൾ)
ഒരേ അല്ലെങ്കിൽ ചെറിയ നീളത്തിലേക്ക് മാത്രം വെട്ടിച്ചുരുക്കൽ. (VOS)
ഒരു FILEHANDLE നൽകിയിട്ടുണ്ടെങ്കിൽ, അത് എഴുതാവുന്നതും അനുബന്ധ മോഡിൽ തുറക്കുന്നതും ആയിരിക്കണം (അതായത്,
"open(FH, '>>ഫയലിന്റെ പേര്')" അല്ലെങ്കിൽ "sysopen(FH,...,O_APPEND|O_RDWR)" ഉപയോഗിക്കുക. ഒരു ഫയലിന്റെ പേരാണെങ്കിൽ
വിതരണം ചെയ്യപ്പെടുന്നു, അത് മറ്റെവിടെയെങ്കിലും തുറക്കാൻ പാടില്ല. (Win32)
umask ലഭ്യമല്ലാത്തിടത്ത് undef നൽകുന്നു.
"umask" പ്രവർത്തിക്കുന്നു, പക്ഷേ ഫയൽ അന്തിമമാകുമ്പോൾ മാത്രമേ ശരിയായ അനുമതികൾ സജ്ജീകരിക്കൂ
അടച്ചു. (AmigaOS)
utime പരിഷ്ക്കരണ സമയം മാത്രം അപ്ഡേറ്റ് ചെയ്യുന്നു. (VMS, RISC OS)
പ്രതീക്ഷിച്ച പോലെ പെരുമാറണമെന്നില്ല. പെരുമാറ്റം സി റൺടൈം ലൈബ്രറിയെ ആശ്രയിച്ചിരിക്കുന്നു
"utime()" നടപ്പിലാക്കൽ, ഉപയോഗിക്കുന്ന ഫയൽസിസ്റ്റം. FAT ഫയൽസിസ്റ്റം
സാധാരണയായി "ആക്സസ് ടൈം" ഫീൽഡിനെ പിന്തുണയ്ക്കുന്നില്ല, കൂടാതെ ഇത് ടൈംസ്റ്റാമ്പുകളെ പരിമിതപ്പെടുത്തിയേക്കാം
രണ്ട് സെക്കൻഡിന്റെ ഗ്രാനുലാരിറ്റി. (Win32)
കാത്തിരിക്കുക
വെയ്റ്റ്പിഡ് ഉപയോഗിച്ച് സ്പോൺ ചെയ്ത പ്രോസസ്സുകൾക്കായി തിരികെ നൽകുന്ന പ്രോസസ്സ് ഹാൻഡിലുകളിൽ മാത്രമേ പ്രയോഗിക്കാൻ കഴിയൂ
"സിസ്റ്റം(1, ...)" അല്ലെങ്കിൽ "ഫോർക്ക്()" ഉപയോഗിച്ച് സൃഷ്ടിച്ച കപട പ്രക്രിയകൾ. (Win32)
ഉപയോഗപ്രദമല്ല. (RISC OS)
പിന്തുണയുള്ള പ്ലാറ്റ്ഫോമുകൾ
ഇനിപ്പറയുന്ന പ്ലാറ്റ്ഫോമുകൾ പേൾ 5.12 നിർമ്മിക്കുന്നതായി അറിയപ്പെടുന്നു (ഏപ്രിൽ 2010 മുതൽ, അതിന്റെ റിലീസ് തീയതി)
എന്നതിൽ ലഭ്യമായ സ്റ്റാൻഡേർഡ് സോഴ്സ് കോഡ് വിതരണത്തിൽ നിന്ന്http://www.cpan.org/src>
Linux (x86, ARM, IA64)
HP-UX
AIX
വിന്ക്സനുമ്ക്സ
വിൻഡോസ് 2000
വിൻഡോസ് എക്സ്പി
വിൻഡോസ് സെർവർ 2003
വിൻഡോസ് വിസ്റ്റ
വിൻഡോസ് സെർവർ 2008
വിൻഡോസ് 7
സിഗ്വിൻ
ചില പരിശോധനകൾ പരാജയപ്പെടുമെന്ന് അറിയപ്പെടുന്നു:
· ext/XS-APites/t/call_checker.t - കാണുക
· dist/I18N-Collate/t/I18N-Collate.t
· ext/Win32CORE/t/win32core.t - സമീപകാല സിഗ്വിൻ ഇൻസ്റ്റാളുകളിൽ പരാജയപ്പെടാം.
സോളാരിസ് (x86, SPARC)
ഓപ്പൺവിഎംഎസ്
ആൽഫ (7.2 ഉം അതിനുശേഷവും)
I64 (8.2 ഉം അതിനുശേഷവും)
സിമ്പിയൻ
NetBSD
ഫ്രീബിഎസ് ഡി
ഡെബിയൻ ഗ്നു / കെഫ്രീബിഎസ്ഡി
ഹൈകു
ഐറിക്സ് (6.5. മറ്റെന്താണ്?)
ഓപ്പൺബിഎസ്ഡി
ഡ്രാഗൺഫ്ലൈ ബിഎസ്ഡി
അർദ്ധരാത്രി BSD
QNX ന്യൂട്രിനോ RTOS (6.5.0)
മിറോസ് ബിഎസ്ഡി
സ്ട്രാറ്റസ് OpenVOS (17.0 അല്ലെങ്കിൽ അതിനുശേഷമുള്ളത്)
മുന്നറിയിപ്പുകൾ:
time_t പ്രശ്നങ്ങൾ പരിഹരിക്കപ്പെടുകയോ പരിഹരിക്കപ്പെടാതിരിക്കുകയോ ചെയ്യാം
സിംബിയൻ (സീരീസ് 60 v3, 3.2, 5 - മറ്റെന്താണ്?)
സ്ട്രാറ്റസ് VOS / OpenVOS
AIX
ആൻഡ്രോയിഡ്
ഫ്രീമിന്റ്
Perl ഇപ്പോൾ FreeMiNT/Atari ഉപയോഗിച്ച് നിർമ്മിക്കുന്നു. ഇത് കുറച്ച് ടെസ്റ്റുകളിൽ പരാജയപ്പെടുന്നു, അതിന് ചിലത് ആവശ്യമാണ്
അന്വേഷണം.
ലോഡ് ചെയ്യാവുന്ന മൊഡ്യൂൾ കഴിവുകൾക്കായി FreeMiNT പോർട്ട് GNU dld ഉപയോഗിക്കുന്നു. അതിനാൽ നിങ്ങൾക്ക് ഉണ്ടെന്ന് ഉറപ്പാക്കുക
perl നിർമ്മിക്കുമ്പോൾ ആ ലൈബ്രറി ഇൻസ്റ്റാൾ ചെയ്തു.
EOL പ്ലാറ്റ്ഫോമുകൾ
(പേൾ 5.20)
താഴെപ്പറയുന്ന പ്ലാറ്റ്ഫോമുകളെ Perl-ന്റെ മുൻ പതിപ്പ് പിന്തുണച്ചിരുന്നുവെങ്കിലും പിന്തുണച്ചിട്ടുണ്ട്
5.20 മുതൽ പേർളിന്റെ സോഴ്സ് കോഡിൽ നിന്ന് ഔദ്യോഗികമായി നീക്കം ചെയ്തു:
AT&T 3b1
(പേൾ 5.14)
ഇനിപ്പറയുന്ന പ്ലാറ്റ്ഫോമുകൾ 5.10 വരെ പിന്തുണച്ചു. അവർ ഇപ്പോഴും 5.12-ൽ പ്രവർത്തിച്ചിട്ടുണ്ടാകാം,
എന്നാൽ 5.14-ന് പിന്തുണയ്ക്കുന്ന കോഡ് നീക്കം ചെയ്തു:
വിൻഡോസ് 95
വിൻഡോസ് 98
വിൻഡോസ് ME
വിൻഡോസ് NT4
(പേൾ 5.12)
താഴെപ്പറയുന്ന പ്ലാറ്റ്ഫോമുകളെ Perl-ന്റെ മുൻ പതിപ്പ് പിന്തുണച്ചിരുന്നുവെങ്കിലും പിന്തുണച്ചിട്ടുണ്ട്
5.12 മുതൽ പേർളിന്റെ സോഴ്സ് കോഡിൽ നിന്ന് ഔദ്യോഗികമായി നീക്കം ചെയ്തു:
അടാരി Mint
അപ്പോളോ ഡൊമെയ്ൻ/OS
Apple Mac OS 8/9
ടെനോൺ മച്ചെൻ
പിന്തുണയുള്ള പ്ലാറ്റ്ഫോമുകൾ (പേൾ 5.8)
2002 ജൂലൈ വരെ (പേൾ റിലീസ് 5.8.0), ഇനിപ്പറയുന്ന പ്ലാറ്റ്ഫോമുകൾക്ക് പേൾ നിർമ്മിക്കാൻ കഴിഞ്ഞു
എന്നതിൽ ലഭ്യമായ സ്റ്റാൻഡേർഡ് സോഴ്സ് കോഡ് വിതരണത്തിൽ നിന്ന്http://www.cpan.org/src/>
AIX
ബിയോസ്
BSD/OS (BSDi)
സിഗ്വിൻ
DG/UX
ഡോസ് ഡിജെജിപിപി 1)
DYNIX/ptx
EPOC R5
ഫ്രീബിഎസ് ഡി
HI-UXMPP (ഹിറ്റാച്ചി) (5.8.0 പ്രവർത്തിച്ചു, പക്ഷേ ഞങ്ങൾക്കത് അറിയില്ലായിരുന്നു)
HP-UX
ഐറിക്സ്
ലിനക്സ്
മാക് ഒഎസ് ക്ലാസിക്
Mac OS X (ഡാർവിൻ)
MPE/iX
NetBSD
നെറ്റ്വെയർ
നോൺസ്റ്റോപ്പ്-യുഎക്സ്
ReliantUNIX (മുമ്പ് SINIX)
ഓപ്പൺബിഎസ്ഡി
OpenVMS (മുമ്പ് VMS)
UNIX (Unixware) തുറക്കുക (Perl 5.8.1/5.9.0 മുതൽ)
OS / 2
OS/400 (PASE ഉപയോഗിച്ച്) (Perl 5.8.1/5.9.0 മുതൽ)
PowerUX
POSIX-BC (മുമ്പ് BS2000)
ക്യുഎൻഎക്സ്
സൊളാരിസ്
SunOS 4
സൂപ്പർ-യുഎക്സ് (എൻഇസി)
Tru64 UNIX (മുമ്പ് DEC OSF/1, ഡിജിറ്റൽ UNIX)
UNICOS
UNICOS/mk
UTS
VOS / OpenVOS
Win95/98/ME/2K/XP 2)
WinCE
z/OS (മുമ്പ് OS/390)
വിഎം/ഇഎസ്എ
1) ഡോസ് മോഡിൽ ഡോസ് അല്ലെങ്കിൽ ഒഎസ്/2 പോർട്ടുകൾ ഉപയോഗിക്കാം
2) കമ്പൈലറുകൾ: Borland, MinGW (GCC), VC6
ഇനിപ്പറയുന്ന പ്ലാറ്റ്ഫോമുകൾ മുമ്പത്തെ പതിപ്പുകളിൽ (5.6, 5.7) പ്രവർത്തിച്ചു, പക്ഷേ ഞങ്ങൾ ചെയ്തില്ല
5.8.0 റിലീസിനായി ഇവ ശരിയാക്കുകയോ പരീക്ഷിക്കുകയോ ചെയ്യുക. വളരെ നല്ലത് ഉണ്ട്
ഇവയിൽ പലതും 5.8.0 ഉപയോഗിച്ച് നന്നായി പ്രവർത്തിക്കാനുള്ള സാധ്യത.
BSD/OS
DomainOS
ഹർഡ്
lynxOS
മാക് ടെൻ
PowerMAX
എസ്സിഒ എസ്.വി
SVR4
യുണിക്സ്വെയർ
വിൻഡോസ് 3.1
5.8.0 ന് തകർന്നതായി അറിയപ്പെടുന്നു (എന്നാൽ 5.6.1, 5.7.2 എന്നിവ ഉപയോഗിക്കാം):
സുഹൃത്തുക്കൾ
ഇനിപ്പറയുന്ന പ്ലാറ്റ്ഫോമുകൾ മുമ്പ് ഉറവിടത്തിൽ നിന്ന് പേൾ നിർമ്മിക്കുന്നതായി അറിയപ്പെട്ടിരുന്നു (5.005_03
മുമ്പത്തേതും), എന്നാൽ നിലവിലെ റിലീസിനായി അവരുടെ നില പരിശോധിക്കാൻ ഞങ്ങൾക്ക് കഴിഞ്ഞില്ല,
ഒന്നുകിൽ ഹാർഡ്വെയർ/സോഫ്റ്റ്വെയർ പ്ലാറ്റ്ഫോമുകൾ അപൂർവമായതിനാലോ ഞങ്ങൾക്ക് സജീവമല്ലാത്തതിനാലോ
ഈ പ്ലാറ്റ്ഫോമുകളിൽ ചാമ്പ്യൻ--അല്ലെങ്കിൽ രണ്ടും. അവർ ജോലി ചെയ്യാറുണ്ടായിരുന്നു, എന്നിരുന്നാലും, മുന്നോട്ട് പോയി ശ്രമിക്കുക
അവ സമാഹരിക്കുന്നു, അനുവദിക്കുക perlbug@perl.org എന്തെങ്കിലും കുഴപ്പം.
3B1
A/UX
ConvexOS
CX/UX
DC/OSx
ഡിഡിഇ എസ്എംഇഎസ്
ഡോസ് ഇഎംഎക്സ്
ഡൈനിക്സ്
EP/IX
ESIX
FPS
ജെനിക്സ്
ഗ്രീൻഹിൽസ്
ISC
മാക് ടെൻ 68 കെ
MPC
NEWS-OS
അടുത്ത പടി
OpenSTEP
ഓപസ്
പ്ലാൻ ചെയ്യുക 9
RISC/os
SCO ODT/OSR
നക്ഷത്രം
SVR2
TI1500
TitanOS
അൾട്രിക്സ്
യൂണിസിസ് ഡൈനിക്സ്
ഇനിപ്പറയുന്ന പ്ലാറ്റ്ഫോമുകൾക്ക് അവരുടേതായ സോഴ്സ് കോഡ് വിതരണങ്ങളും ബൈനറികളും ലഭ്യമാണ്
വഴിhttp://www.cpan.org/ports/>
പേൾ റിലീസ്
OS/400 (ILE) 5.005_02
ടാൻഡം ഗാർഡിയൻ 5.004
ഇനിപ്പറയുന്ന പ്ലാറ്റ്ഫോമുകളിൽ ബൈനറികൾ മാത്രമേ ലഭ്യമാകൂ
<http://www.cpan.org/ports/index.html> :
പേൾ റിലീസ്
അക്രോൺ റിസ്കോസ് 5.005_02
AOS 5.002
LynxOS 5.004_02
സോഴ്സ് കോഡിൽ നിന്ന് എപ്പോഴും നിങ്ങളുടെ സ്വന്തം പേൾ നിർമ്മിക്കാൻ ഞങ്ങൾ നിർദ്ദേശിക്കുന്നുണ്ടെങ്കിലും, രണ്ടിനും
പരമാവധി കോൺഫിഗറബിളിറ്റിയും സുരക്ഷയ്ക്കായി, നിങ്ങൾ തിരക്കിലാണെങ്കിൽ നിങ്ങൾക്ക് പരിശോധിക്കാം
<http://www.cpan.org/ports/index.html> ബൈനറി വിതരണങ്ങൾക്കായി.
onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് perlport ഓൺലൈനായി ഉപയോഗിക്കുക