Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Скрипт работает не так, как хотелось бы....


Автор: AkimVital 29.4.2005, 15:53

есть такой блок на перле:

open (FILE, "<$users_file");
@LINES = <FILE>;
close(FILE);
$SIZE = @LINES;
$user2 = "";
for ($i=0; $i<=$SIZE; $i++) {
chomp ($LINES[$i]);
@Line = split(':',$LINES[$i]);
$user2 = $Line[0];
#интересуте вот это условие... оно не выполняется.
if ($user2 == $user) {
#и коректность вот этого выражения
$LogFile = $Line[1];
}
}

Где тут могла закрастся ошибка?
Интерперетатор ничего не пишет. Файл вродь читается нормально.

Заранее благодарен)

Автор: korob2001 29.4.2005, 17:46
Код

    if ($user2 == $user) {
        $LogFile = $Line[1];
    }

1. Откуда взялась переменная $user ????

2. Когда сравниваешь строки, юзай eq , а не ==

3. Привыкай всегда пользоваться прагмой use strict;

Удачи.

М
 
При вставке кода используй кнопку "Код", для того, что бы код подсвечивался и не терял своего формата
.

Автор: wlad 29.4.2005, 17:52
Код

perldoc perlop 


Цитата
Binary ``=='' returns true if the left argument is numerically equal to the right argument.

Binary ``eq'' returns true if the left argument is stringwise equal to the right argument.


Что в вольном переводе значит примерно следующее

Бинарный оператор "==" возвращает истину если левый _числовой_ аргумент равен правому аргументу.

Бинарный оператор "eq'' возвращает истину если левый _строковый_ аргумент равен правому агрументу.
smile


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)