my @output =
map $_->[0],
sort{$a->[1] <=> $b->[1]}
map [$_,-s $_],
@array;
誰かがコードを詳しく説明できますか?PerlでSchwartzian変換?
@array
配列(ファイル名の、後で使用する与えられた):私は
my @output =
map $_->[0],
sort{$a->[1] <=> $b->[1]}
map [$_,-s $_],
@array;
誰かがコードを詳しく説明できますか?PerlでSchwartzian変換?
@array
配列(ファイル名の、後で使用する与えられた):私は
読むがあります。..ヘッドまたはそれの尾を取得することはできません。
map [$_,-s $_],
は各ファイル名について、最初の要素は、ファイル名と、第2の要素、ファイルのバイトサイズであると、2つの要素無名配列への参照を取得します。 mapはこれらの配列参照のリストを返します。
sort{$a->[1] <=> $b->[1]}
ファイルサイズを大きくすることによって配列参照のリストをソートします。
map $_->[0],
配列参照のリストをファイル名のリストに戻しますが、ソート順に戻します。
my @output =
リストを@出力に保存します。
これはと機能的に同等です:
my @output = sort { -s $a <=> -s $b } @array;
だけソートによって行わ比較毎に一度の代わりに、一度、各ファイルのサイズを取得します。
ウィキペディアはボトムアップから詳細なexplanation and analysis
「<=>」はどういう意味ですか? –
@ compile-fan「宇宙船」演算子「<=>」は、2つの引数を比較し、1,0より大きいか等しいか小さいかを意味する1,0または-1を返します。 – TLP
あなたは 'perldoc perlop'を通して慣れないオペレータを調べることができます。 「<=>」演算子は、「等価演算子」セクションの下にあります。 http://perldoc.perl.org/perlop.html#Equality-Operators – friedo