my @output =
map $_->[0],
sort{$a->[1] <=> $b->[1]}
map [$_,-s $_],
@array;
क्या कोई कोड अधिक विस्तार से समझा सकता है? मैं .. सिर या यह की पूंछ नहीं मिल सकता हैश्वार्टज़ियन पर्ल में बदल गया?
my @output =
map $_->[0],
sort{$a->[1] <=> $b->[1]}
map [$_,-s $_],
@array;
क्या कोई कोड अधिक विस्तार से समझा सकता है? मैं .. सिर या यह की पूंछ नहीं मिल सकता हैश्वार्टज़ियन पर्ल में बदल गया?
पढ़ें है:
@array
एक सरणी (फ़ाइल नाम की, बाद में उपयोग को देखते हुए)।
map [$_,-s $_],
प्रत्येक फ़ाइल नाम के लिए, पहला तत्व फ़ाइल नाम और दूसरा तत्व, फ़ाइल के बाइट आकार होने के साथ, एक दो तत्व गुमनाम सरणी के लिए एक संदर्भ मिलता है। नक्शा इन सरणी संदर्भों की एक सूची देता है।
sort{$a->[1] <=> $b->[1]}
फ़ाइल आकार को बढ़ाकर सरणी संदर्भों की सूची को सॉर्ट करें।
map $_->[0],
सरणी संदर्भों की सूची को फ़ाइल नामों की सूची में वापस चालू करें, लेकिन अब क्रमबद्ध क्रम में।
my @output =
@output में सूची को सहेजें।
यह करने के लिए समारोह में बराबर है:
my @output = sort { -s $a <=> -s $b } @array;
लेकिन केवल प्रत्येक फ़ाइल के लिए एक बार के बजाय प्रकार के द्वारा किया तुलना प्रति एक बार आकार हो जाता है।
विकिपीडिया नीचे से ऊपर एक विस्तृत explanation and analysis
'<=> 'का अर्थ क्या है? –
@ संकलन-प्रशंसक "स्पेसशिप" ऑपरेटर '<=> 'दो तर्कों की तुलना करेगा और 1, 0 या -1 लौटाएगा, जिसका अर्थ है, उससे बराबर या उससे कम। – TLP
आप 'perldoc perlop' के माध्यम से अपरिचित ऑपरेटरों को देख सकते हैं। '<=>' ऑपरेटर समानता ऑपरेटरों अनुभाग के तहत कवर किया गया है। http://perldoc.perl.org/perlop.html#Equality-Operators – friedo