Ниже приведены некоторые комментарии о смерти:
Во-первых, не используйте B :: Terse, он устарел. B :: Concise дает вам гораздо лучшую информацию, когда вы к ней привыкли.
Во-вторых, вы запустили его, используя заданный литеральный код, поэтому условие было взято как голое слово, которое оказалось правдой, поэтому логическая проверка была оптимизирована в обоих случаях, что побеждает цель.
В-третьих, нет никакого дополнительного кода операции - «ноль» указывает на код операции, который был оптимизирован (полностью вне дерева выполнения, хотя все еще в дереве разбора).
Вот краткое дерево выполнения для двух случаев, которое показывает их как идентичные:
$ perl -MO=Concise,-exec -e'($condition) and do { do something }'
1 <0> enter
2 <;> nextstate(main 2 -e:1) v
3 <#> gvsv[*condition] s
4 <|> and(other->5) vK/1
5 <$> const[PV "something"] s/BARE
6 <1> dofile vK/1
7 <@> leave[1 ref] vKP/REFC
-e syntax OK
$ perl -MO=Concise,-exec -e'if ($condition) { do something }'
1 <0> enter
2 <;> nextstate(main 3 -e:1) v
3 <#> gvsv[*condition] s
4 <|> and(other->5) vK/1
5 <$> const[PV "something"] s/BARE
6 <1> dofile vK/1
7 <@> leave[1 ref] vKP/REFC
-e syntax OK