РЕДАКТИРОВАТЬ: Судя по всему, вы изменили значение истинности вашего сообщения, и вы хотели сказать, что оператор if () всегда выполняется. Это имеет смысл. В результате <CONF>
читает в строке "1\n"
или "0\n"
, а не число 1
или 0
. Конечный символ новой строки не позволяет "0"
оценить как ложное, поэтому вам нужно chomp()
его (или использовать функцию int()
, как упоминалось в другом посте). В любом случае должно работать.
(Обратите внимание, что, к сожалению, chomp()
не не возвращает строку chomp()
ed, но подсчет количества удаленных символов, поэтому вы не можете просто сказать if(chomp(my $tmp = <CONF>))
с этим покончено.)
Во всяком случае, это то, что я сделал:
open(CONF, "/var/web/onhit.conf");
chomp(my $tmp = <CONF>);
if($tmp) {
print "Hello, world!\n";
}
close CONF;
Несколько рекомендаций:
- Попробуйте использовать форму с тремя аргументами
open()
или, по крайней мере, указать "<"
перед именем файла.
- Попробуйте использовать переменную для хранения дескриптора файла (
$conf
) вместо использования более старой и неуклюжей формы дескриптора файла (CONF
).
Это код, который я написал бы:
open my $conf, "<", "/var/web/onhit.conf";
chomp(my $tmp = <$conf>);
if($tmp) {
print "Hello, world!\n";
}
close $conf;