* nix सिस्टम पर, मैं अच्छे परिणाम के साथ निम्न का उपयोग किया है।
sub filesExist { return scalar (my @x = `ls -1a 2> /dev/null "$_[0]"`) }
यह पाया मैचों की संख्या के साथ 0 यदि कोई भी जवाब है, या। इसे 'अगर' सशर्त में आसानी से उपयोग किया जाता है जैसे:
if(!filesExist("/foo/var/not*there.log") &&
!filesExist("/foo/var/*/*.log") &&
!filesExist("/foo/?ar/notthereeither.log"))
{
print "No matches!\n";
} else {
print "Matches found!\n";
}
वास्तव में आप कौन से पैटर्न का उपयोग कर सकते हैं, यह निर्धारित करेगा कि आपका खोल किस प्रकार समर्थन करता है। लेकिन अधिकांश गोले '*' और '?' के उपयोग का समर्थन करते हैं - और वे हर जगह एक ही चीज़ का मतलब है मैंने देखा है। बेशक, अगर आपने 'स्केलर' फ़ंक्शन पर कॉल हटा दिया है, तो यह उन मैचों को वापस कर देगा - वे चर फ़ाइल फ़ाइल नामों के लिए उपयोगी।
स्रोत
2013-09-30 18:32:11
बस पूरा होने के लिए, आप 'foreach (glob ("*। File")) {something}' भी कर सकते हैं ... – dawg
लेकिन मैं वहां regexp डालने में असमर्थ हूं। क्या मैं नियमित अभिव्यक्तियों का उपयोग कर सकता हूं? – Jean
नहीं @alertjean, आप निर्देशिका और मैन्युअल रूप से स्कैन फ़ाइल नाम रेगुलर एक्सप्रेशन के उपयोग को खोलने के लिए होगा। 'ग्लोब' केवल पारंपरिक [शैल वाइल्ड कार्ड्स] का समर्थन करता है (http://www.tuxfiles.org/linuxhelp/wildcards.html)। – meagar