2010-05-24 19 views
14

, bizPerl'de dizin (dosya yolu) ayırıcısını nasıl alabilirim? Java durumunda

System.getProperty("path.separator"); 

Perl benzer bir yolu var mı kullanan yol ayırıcısı alabilirim? Tek yapmak istediğim bir dir, hemen bir alt dizin bulmak. İki argüman $a ve $b; Birincisi yol ayırıcısını temel alarak ve son fragman dışında tekrar birleştirip ikinci argümanı karşılaştırıyorum.

Sorun, kodumun genel olması ve sisteme bağlı yol ayırıcısının ne olduğunu bilmem gerektiğinden mi?

+1

Başka sorularınız mı var? 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-yapı-os-bağımsız-dosya-yolları-in-perl – Zaid

+5

Arama motorları yararına: Bu soru ve cevaplar aslında dizin ayırıcı (genellikle eğik çizgi veya ters eğik çizgi) ile uğraşmak. Yol ayırıcı, farklı bir amaca sahip farklı bir şeydir (genellikle iki nokta üst üste veya noktalı virgül). $ Yapılandırma {path_sep} '. – daxim

+0

@daxim - Başlığı düzenledim, umarım artık daha az belirsizdir – DVK

cevap

3

kabul cevabı gerçek sorunu çözer ama gerçekten sadece perl çekirdek modülleri kullanarak (ayırıcı almak istiyorsanız): Yalnızca, ayırıcıyı bırakarak, geçerli sistem ayırıcısıyla iki boş dosya adına katılır.

20

Sen elle dosya yollarını oluşturmak gerekir - bunun yerine kullanmak File::Spec modülü:

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

Split'i unutma. Yollarla çalışmak için daha zarif bir yol, CPAN'dan temin edilebilen Yol :: Sınıfıdır. – Schwern

+0

@Schwern - Kendimi hiç kullanmadığım için Path :: Class'ı tavsiye etmekten kendimi rahat hissetmiyorum ... ama başka bir yerde bunun için tavsiyelerde bulunmuştum, bu yüzden kontrol edeceğim. Splitdir hakkında iyi bir nokta - korkarım yine de devam edersem cevap POD'un kopyasına/yapıştırmasına dönüşür :) – DVK

+0

Yol :: Sınıfı çok daha kolay, alternatiflerden daha kolay. – singingfish

İlgili konular