जब मैं opendir
, readdir
, और closedir
के साथ पर्ल में एक निर्देशिका पढ़ता हूं, फ़ंक्शन किसी भी विशिष्ट क्रम में फ़ाइलों को पढ़ने के लिए प्रतीत नहीं होता है (जो मैं बता सकता हूं)।सॉर्ट किए गए क्रम में निर्देशिका में फ़ाइलों को मैं कैसे पढ़ सकता हूं?
1224161460
1228324260
1229698140
मैं संख्यात्मक क्रम में इन निर्देशिका है, जो सबसे पुराना निर्देशिका पहले डाल में पढ़ना चाहते हैं:
मैं एक निर्देशिका युग टाइमस्टैम्प द्वारा नामित उपनिर्देशिका है कि पढ़ रहा हूँ।
जब मैं readdir
का उपयोग करता हूं, तो इसे पढ़ने वाला पहला 1228324260 है, जो मध्य है। मुझे पता है कि मैं निर्देशिका सामग्री को सरणी में डाल सकता हूं और सरणी को सॉर्ट कर सकता हूं, लेकिन क्या कोई विकल्प है जिसे मैं क्रमबद्ध क्रम में पढ़ने के लिए readdir
पर जा सकता हूं? या शायद सबकुछ सरणी में डालने और सरणी को सॉर्ट करने से इसे पूरा करने का एक और शानदार तरीका है? ऐसा करने के लिए शायद वहां मॉड्यूल भी हैं, लेकिन हमारे पर्यावरण में मॉड्यूल स्थापित करना मुश्किल है, इसलिए जब तक कि यह एक अंतर्निहित मॉड्यूल न हो, मैं मॉड्यूल का उपयोग नहीं करना चाहूंगा ...
धन्यवाद!
संपादित के रूप में अनुरोध किया है, मैं कोड है कि मैं का उपयोग कर रहा पोस्टिंग कर रहा हूँ:,
opendir(my $data_dh, $data_dir) or die "Cannot open $data_dir\n";
while (my $name = readdir($data_dh)) {
next if ($name eq '.' or $name eq '..');
my $full_path = "${data_dir}/${name}";
next unless (-d $full_path);
process_dir($full_path);
}
closedir($data_dh);
मैं एक AIX बॉक्स पर पर्ल 5.8.2 का उपयोग कर रहा है, अगर यह एक फर्क – BrianH
मैं जानता हूँ कि यह एक सरल स्क्रिप्ट है बनाता है, लेकिन आप अपने कोड पोस्ट कर सकते हैं तो हम की जरूरत नहीं है: आप एक
foreach
उपयोग कर सकते हैं इसे पुन: उत्पन्न करें? –process_dir से पहले और साइन आवश्यक नहीं है, और कुछ परिस्थितियों में हानिकारक हो सकता है। मैं आपको इसे हटाने के लिए सलाह दूंगा। –