Perl のハッシュで、key ではなく value でのスライシングを1行で書けますか?
python, ruby ではハッシュの要素でのスライスが1行でできますが、perl ではどうやるのでしょうか?
「perl hash slice」 で検索しても、hash のキーでスライスする方法しか見つかりませんでした。
やりたいのは下記のようなことです。
ruby
[6] pry(main)> hash = (0..3).map { |x| [x, x*2] }.to_h
=> {0=>0, 1=>2, 2=>4, 3=>6}
[7] pry(main)> hash.select { |k, v| v > 2 }
=> {2=>4, 3=>6}
python
In [26]: hash = { x:x*2 for x in range(4) }
In [27]: hash
Out[27]: {0: 0, 1: 2, 2: 4, 3: 6}
In [28]: { k:v for k, v in hash.items() if v > 2 }
Out[28]: {2: 4, 3: 6}
ruby も python も、(key, value) の組としてループできますが、
perl だとリストなので、同じようには扱えなくて、悩んでいます。
自分で考えたのは、[key, value]の配列のリストに変換してから、ループする方法ですが、
標準で用意されていないとも思えないので、質問させていただきました。