簡単な答えは、「いいえ、文脈を除いて特別ではありませんsort
」です。しかし、最近、ルーチンの外でそれらを使用する機会がありましたsort
。これは、あなたの質問に密接に関係しています。
関数を 1 回の比較に利用するために$a
、 and を$b
直接使用しました。sort
それらをスコープし、ブロックをlocal
使用してスコープを含めました。do
my $cmp = do {
local $a = $summary->{current_version};
local $b = $latest_version_on_usb;
cmp_version();
};
cmp_version
は で使用するように設計されたサブルーチンsort
であるため、通常は次のように使用します。
my @sorted_versions = sort cmp_version @old_versions;
cmp_version
によって呼び出されることを知っているためsort
、すべての作業を$a
および$b
内部で実行します。
ソート サブルーチンを非ソート コンテキストで再利用したかったという事実 ( orのような実際の演算子であるかのように単一の " $foo cmp_version $bar
" 比較の出力が必要だった) が、これを促したものです。それがブロックやサブルーチンでない限り、私が考えることができる唯一の理由です-それらがコンテキスト内で特別であるという事実は、そのコンテキストの外でそれらをいじるとあなたを噛むことになる可能性があることを意味します.cmp_version
<=>
cmp
$a
$b
sort
sort