मान लीजिए मैं, कुछ Windows सांकेतिक लिंक बनाने में के रूप में:एक पर्ल स्क्रिप्ट में विंडोज प्रतीकात्मक लिंक हटा दें?
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 ..
मैं
rd /s /q withlink
साथ निर्देशिका खोल में सिमलिंक युक्त नष्ट कर सकते हैं मैं एक पर्ल स्क्रिप्ट में क्या करना ही काम है जहां हम वर्तमान में साइगविन 'आरएम-आरएफ' का उपयोग करते हैं। दुर्भाग्यवश हम साइगविन 1.5 और आरएम और आरएम-आरएफ का उपयोग कर रहे हैं जो प्रतीकात्मक लिंक (they delete symbolic link contents instead of the symlinks) पर उस संस्करण में ठीक से काम नहीं करते हैं।
अगर मैं कोशिश:
use File::Path qw(rmtree) ;
rmtree(['withlink']) ;
यह अच्छी तरह से काम करता है, बशर्ते मैं किसी भी निर्देशिका सांकेतिक लिंक (जैसे एक बना-लिंक के ऊपर अनुक्रम में बाहर REM'ed), तो पर्ल की जरूरत नहीं है rmtree सिगविन की तरह व्यवहार करना समाप्त होता है, और मैं अपनी मूल निर्देशिका की निर्देशिका सामग्री को हटा देता हूं।
क्या किसी के पास वैकल्पिक वैकल्पिक प्रतिलिपि निर्देशिका हटाने की विधि का सुझाव है जिसका मैं उपयोग कर सकता हूं। मैंने केवल एक खोल कॉलआउट के बारे में सोचा:
system("rd /s /q withlink") ;
लेकिन इसके लिए मुझे प्लेटफॉर्म का परीक्षण करने और विंडोज और यूनिक्स के लिए अलग-अलग पर्ल कोड की आवश्यकता है।
संपादित करें: ध्यान दें कि यूनिक्स के विपरीत, अनलिंक() कम से कम perl v5.6.0 के साथ निर्देशिका सिम्लिंक को हटाने के लिए काम नहीं करता है, जो कि वर्तमान में हमारी बिल्ड सिस्टम का उपयोग कर रहा है। हालांकि, rmdir() एक विंडोज निर्देशिका symlink को हटाने के लिए काम करता है।
यदि आप कोशिश करते हैं .... क्या? –
क्षमा करें, मैंने अभी भी अपना शीर्षक थोड़ा सा संपादित किया था, जबकि मैं अभी भी अपना प्रश्न पूछ रहा था, और समय-समय पर और आकस्मिक रूप से अपूर्ण राज्य में सवाल जमा कर दिया। –
अद्यतन के लिए धन्यवाद! –