varsayalım ben gibi bazı Windows sembolik bağlantıları oluşturmak:Windows sembolik linkleri perl betiğinde silinsin mi?
rd /s /q source withlink linkdir
mkdir source
mkdir withlink
echo blah > source/myfile
cd withlink
touch blah
mklink mylink ..\source\myfile
@REM mklink /d linkdir ..\source
cd ..
Ben
rd /s /q withlink
ile kabuğunda sembolik içeren dizini silebilirsiniz ben perl programı yapmak aynı görevi var şu anda cygwin 'rm -rf' kullanıyoruz. Ne yazık ki biz cygwin 1.5 kullanıyoruz ve rm ve rm -rf kullanmak istiyorum (they delete symbolic link contents instead of the symlinks) sembolik linkler üzerinde bu sürümde düzgün çalışmıyor.
Ben denerseniz: Bu güzel çalışıyor
use File::Path qw(rmtree) ;
rmtree(['withlink']) ;
, sağlanan herhangi bir dizin sembolik bağlantıları (bir yukarıdaki oluşturmak-bağlantılar sırayla dışarı REM'ed gibi), sonra perl en yok rmtree cygwin gibi davranıyor, ve orijinal dizinimin dizin içeriği silinmiş.
herkes Kullanabileceğim alternatif perl ardışık dizin silme yönteminin bir öneri var mı. Ben sadece bir kabuk Ek bilgiyi düşündü:
system("rd /s /q withlink") ;
ama bu platformun denenmesi ve Windows ve Unix için farklı perl kodu var gerektirir.
DÜZENLEME: DÜZENLEME: Unix'in tersine, unlink(), yapı sistemimizin şu anda kullandığı, en azından perl v5.6.0 ile bir dizin symlink'ini kaldırmak için çalışmaz. Ancak, rmdir() bir windows dizinini kaldırmak için çalışır.
Eğer denerseniz .... ne? –
Üzgünüm, hala soruyu sorduğumda başlığımı biraz düzenledim ve erken ve yanlışlıkla soruyu tamamlanmamış bir halde teslim ettim. –
Güncelleme için teşekkürler! –