Как я могу сказать, подключен ли STDIN к терминалу в Perl?

Случай 1: int t2=temp%100 + temp>99?2000:1900; переписать для ясности как: int t2=(temp%100 + temp)>99 ? 2000 : 1900;

И это выражение: temp%100 + temp равно 140, что больше 99, поэтому выражение имеет значение 2000 .


Случай 2: int t2=temp%100 + (temp>99?2000:1900);

temp не является GreaterThan 99, поэтому выражение равно 1900 и добавлено к temp%100, в результате чего получается 1970 [1121 ]


Случай 3: int t2= temp>99?2000:1900 +temp%100;

temp не является GreaterThan 99, поэтому выражение равно 1900+70, в результате чего в 1970 году


это это все порядок операций; * и / имеют приоритет над + и -, все операторы имеют приоритет.

8
задан GEOCHET 9 February 2009 в 16:12
поделиться

3 ответа

if (-t STDIN) {
  # stdin is connected
} else {
  # stdin is not connected
}

Я обычно использую это в сочетании с-t STDOUT, чтобы узнать, работаю ли я от интерактивной оболочки, или от крона, для включения более вывода.

13
ответ дан 5 December 2019 в 06:39
поделиться

Вы могли бы также интересоваться IO:: Интерактивный, чтобы выяснить, думает ли Perl, что взаимодействует с пользователем. Просто быть подключенным к tty не означает, что пользователь собирается видеть то, что Вы делаете.

12
ответ дан 5 December 2019 в 06:39
поделиться

Одно решение состояло бы в том, чтобы использовать tty:

[root@server] ~> tty
/dev/pts/0
[root@server] ~> echo y | tty
not a tty

Но не очень симпатичный...

0
ответ дан 5 December 2019 в 06:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: