Я даже не знаю как сформулировать... получается просто другой алгоритм отбора, который будет что-то делать (он не всегда будет давать пустую строку, при определенной входной строке на выходе что-то будет).
Даже не вдаваясь в логику программы, чтобы инвертировать B и C в выражении (A && B && C) нужно сделать (A && (!B || !C)). Это кажется из дискретной математики. Если сделать (A && !B && !C) получается совершенно другое условие отбора.
patest: 1) Да, если "после" конденсатора вы вместо сопротивления поставите "обрыв", то конденсатор заряжаться не будет, не смотря на то, что он напрямую подключен к "источнику электронов".
2) Для последовательного соединения элементов совершенно неважно - конденсатор, светодиод, катушка или что-то другое. При последовательно соединении ток на каждом элементе одинаков, а падение напряжение зависит от сопротивления.
Не совсем удачный пример с батареей.
Топикстартера, наверное, смутил именно конденсатор, а батарея - не ведет себя как конденсатор.
Однако сути это не меняет - при последовательном соединении совершенно не важно кто где находится - чтобы электроны "прибежали" на одну обкладку конденсатора, нужно чтобы с другой обкладки они "убежали", где их и встретит сопротивление.
Андрей Канаев: 1) Не факт что в dirname(__FILE__).'/cookie.txt' (каталог со скриптом) разрешена запись, надо или проверить или писать в /tmp/...
2) Не вижу где определена переменная $file