मैं पर्ल का उपयोग कर निर्देशिका में एक टूटी हुई सिम्लिंक को हटाना चाहता हूं।मैं कैसे पता लगा सकता हूं कि पर्ल में एक सिम्लिंक टूट गया है?
मेरे मन में मैं सिर्फ एक निर्देशिका की फ़ाइल सूची था और परीक्षण यह एक सिमलिंक (एल) है और अगर यह गलत रिटर्न सिर्फ लिंक हटाना।
लेकिन ऐसा लगता है कि जब readir का उपयोग कर सभी फाइलों को सूचीबद्ध करने के लिए मेरी टूटी सिमलिंक एक फ़ाइल के रूप recoganized नहीं कर रहे हैं। क्योंकि मेरा लिंक कुछ भी इंगित नहीं कर रहा है, मैं समझता हूं क्यों।
फिर: मैं कैसे पता लगा सकता हूं कि पर्ल में एक सिम्लिंक टूट गया है या नहीं?
धन्यवाद,
अद्यतन
$ mydir के सभी फ़ाइल सिमलिंक, या तो वैध है या टूट गया है। जब मैं @files I प्रदर्शित करता हूं तो मुझे केवल वैध सिम्लिंक की एक सूची मिलती है।
chdir $dir or die;
opendir(DIR, '.') or die;
foreach my $link (readdir DIR) {
next unless -l $link and not -e readlink($link);
print "Removing broken link $link\n";
unlink $link;
}
closedir DIR;
ध्यान दें कि यह महत्वपूर्ण है कि निर्देशिका लिंक होता है वर्तमान निर्देशिका है:
opendir DIR, $myDir;
my @files = grep(/$regexp/,readdir(DIR));
closedir DIR;
print "filenames : @files\n";
आपका क्या मतलब है "एक फ़ाइल के रूप recoganized नहीं कर रहे हैं?" किस से? अपना कोड दिखाएं – ysth