$|
- это специальная переменная Perl, которая может иметь только значения 0 и 1. Любое присвоение $|
true ненулевого значения, например
$| = 1;
<strike>$| = 'foo';</strike>
$| = "4asdf"; # 0 + "4asdf" is 4
$| = \@a;
будет иметь значение установки $|
в 1. Любое назначение false нулевое значение
$| = 0;
$| = "";
$| = undef;
$| = "erk"; # 0 + "erk" is 0
установит $|
в 0.
Развернуть--$|
до $| = $| - 1
, и теперь вы можете видеть, что происходит.Если $|
изначально было 1, то --$|
изменит значение на 0. Если $|
изначально было 0, то --$|
попытается установить значение -1, но фактически установит значение 1.