2011-06-26 12 views

उत्तर

10

पढ़ें है:

@array 

एक सरणी (फ़ाइल नाम की, बाद में उपयोग को देखते हुए)।

map [$_,-s $_], 

प्रत्येक फ़ाइल नाम के लिए, पहला तत्व फ़ाइल नाम और दूसरा तत्व, फ़ाइल के बाइट आकार होने के साथ, एक दो तत्व गुमनाम सरणी के लिए एक संदर्भ मिलता है। नक्शा इन सरणी संदर्भों की एक सूची देता है।

sort{$a->[1] <=> $b->[1]} 

फ़ाइल आकार को बढ़ाकर सरणी संदर्भों की सूची को सॉर्ट करें।

map $_->[0], 

सरणी संदर्भों की सूची को फ़ाइल नामों की सूची में वापस चालू करें, लेकिन अब क्रमबद्ध क्रम में।

my @output = 

@output में सूची को सहेजें।

यह करने के लिए समारोह में बराबर है:

my @output = sort { -s $a <=> -s $b } @array; 

लेकिन केवल प्रत्येक फ़ाइल के लिए एक बार के बजाय प्रकार के द्वारा किया तुलना प्रति एक बार आकार हो जाता है।

+0

'<=> 'का अर्थ क्या है? –

+1

@ संकलन-प्रशंसक "स्पेसशिप" ऑपरेटर '<=> 'दो तर्कों की तुलना करेगा और 1, 0 या -1 लौटाएगा, जिसका अर्थ है, उससे बराबर या उससे कम। – TLP

+1

आप 'perldoc perlop' के माध्यम से अपरिचित ऑपरेटरों को देख सकते हैं। '<=>' ऑपरेटर समानता ऑपरेटरों अनुभाग के तहत कवर किया गया है। http://perldoc.perl.org/perlop.html#Equality-Operators – friedo

संबंधित मुद्दे