2010-05-24 9 views
14

जावा के मामले में, हम पथमैं पर्ल में निर्देशिका (फ़ाइल पथ) विभाजक कैसे प्राप्त कर सकता हूं?

System.getProperty("path.separator"); 

वहाँ पर्ल में एक ऐसी ही रास्ता है का उपयोग कर विभाजक मिल सकता है? मैं बस एक डीआईआर, तत्काल उप निर्देशिका खोजने के लिए करना चाहता हूँ। कहें कि मुझे दो तर्क दिए जा रहे हैं $a और $b; मैं पथ विभाजक के आधार पर पहला व्यक्ति बांट रहा हूं और अंतिम खंड को छोड़कर और दूसरे तर्क के साथ तुलना में इसे फिर से जोड़ रहा हूं।

समस्या मेरी कोड सामान्य हो गया है और उस के लिए मुझे पता है कि क्या प्रणाली निर्भर पथ विभाजक है की जरूरत है?

+1

क्या आपने अन्य प्रश्न देखा है? http://stackoverflow.com/questions/2859015/why-dont-my-perl-regexes-correctly-extract-a-filename-from-a-path, http://stackoverflow.com/questions/1818093/how- Can-i-construct-os-independent-file-paths-in-perl – Zaid

+5

खोज इंजन के लाभ के लिए: यह प्रश्न और उत्तर वास्तव में निर्देशिका विभाजक (आमतौर पर स्लैश या बैकस्लैश) से निपटते हैं। पथ विभाजक एक अलग उद्देश्य (आमतौर पर कोलन या अर्धविराम) एक अलग उद्देश्य के साथ है और 'उपयोग विन्यास' द्वारा वापस किया जाता है; $ कॉन्फ़िग {path_sep} '। – daxim

+0

@daxim - मैंने शीर्षक संपादित किया, उम्मीद है कि यह अब कम अस्पष्ट है – DVK

उत्तर

3

स्वीकार किए जाते हैं जवाब आपके वास्तविक समस्या का हल है, लेकिन आप वास्तव में विभाजक (प्राप्त करने का एकमात्र पर्ल कोर मॉड्यूल का उपयोग कर चाहते हैं):

my $sep = File::Spec->catfile('', ''); 

यह वर्तमान सिस्टम की विभाजक के साथ दो खाली फ़ाइल नाम जुड़ जाता है, केवल विभाजक छोड़कर।

20

आपको अपनी ओर से फ़ाइल पथ नहीं बनाना चाहिए - के बजाय का उपयोग File::Spec मॉड्यूल:

($volume, $directories,$file) = File::Spec->splitpath($path); 
@dirs = File::Spec->splitdir($directories); 
$path = File::Spec->catdir(@directories); 
$path = File::Spec->catfile(@directories, $filename); 
+0

splitdir को मत भूलना। पथ के साथ काम करने का एक और शानदार तरीका पथ :: कक्षा सीपीएएन से उपलब्ध है। – Schwern

+0

@Schwern - मुझे पथ :: कक्षा की सिफारिश करने में सहज महसूस नहीं होता क्योंकि मैंने कभी इसे स्वयं नहीं इस्तेमाल किया ... लेकिन मैंने एसओ पर कहीं और इसके लिए सिफारिशें देखीं, इसलिए मैं इसे देख लूंगा। Splitdir के बारे में अच्छा बिंदु - हालांकि मुझे डर है कि अगर मैं जवाब जारी रखता हूं तो पीओडी की प्रतिलिपि/पेस्ट में बदल जाएगा :) – DVK

+0

पथ :: कक्षा विकल्पों के मुकाबले ज्यादा आसान है। – singingfish