Forum Webscript.Ru

Программирование => Perl => Тема начата: Alexandr от 04 Октября 2002, 14:39:14

Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 14:39:14
Пишу
if (1 == 1) {print "1";} else {print "0";} #1
if (1 != 1) {print "1";} else {print "0";} #0
if ("1" == "1") {print "1";} else {print "0";} #1
if ("1" != "1") {print "1";} else {print "0";} #0
Типа всё ок.

if ("1-1-1" != "1-2-1") {print "1";} else {print "0";} #0
if ("1-1-1" == "1-2-1") {print "1";} else {print "0";} #1
Странно!!??

И ещё вопрос:
Выбираю в массив данные из базы MySQL (5 шт.)
@ary=$sth->fetchrow();
Как правильно проверить элемент массива на NULL?

И ещё:
Как определить есть ли в переменной определённая подстрока?
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: mike от 04 Октября 2002, 14:54:25
Хм...:)

perldoc perlop

Для сравнения строк есть спец. операторы:

eq, gt, lt, cmp
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: USE от 04 Октября 2002, 14:56:19
Цитировать
Странно!!??

для того чтобы проверять числовые значения используй "==" и "!=", а для того, чтобы проверять строки (ведь у тебя уже идут строки в другом примере) надо использовать "eq" и "ne" соответственно.
Цитировать
Как определить есть ли в переменной определённая подстрока?

можно регулярным выражением:

if( $variable =~ /$string/ )
{
    print "В переменной есть требуемая строка";
}
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: mike от 04 Октября 2002, 14:57:35
Цитировать
Выбираю в массив данные из базы MySQL (5 шт.)
@ary=$sth->fetchrow();
Как правильно проверить элемент массива на NULL?

unless (defined $ary[$el]) не подойдет?

Цитировать
Как определить есть ли в переменной определённая подстрока?

$pos = index $str, $substr, $start_pos
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 15:07:43
Пасибо ребята!
Быстро и оперативно. Тока покурить успел сходить. :-)

ne - работает!

Цитировать
unless (defined $ary[$el]) не подойдет?

if (defined $ary[4]) {print "1\\n\\n

";}#1
if (defined @ary[4]) {print "1\\n\\n

";}#1

Не катит. :-(
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 15:09:45
Цитировать
if( $variable =~ /$string/ )
{
    print "В переменной есть требуемая строка";
}

А как, нет подстроки?
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: USE от 04 Октября 2002, 15:14:13
Цитировать
Не катит. :-(

а просто проверить что там записана строка NULL нельзя?
print "NULL" if $ary[4] =~ /^null$/i;
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: USE от 04 Октября 2002, 15:16:18
Цитировать
А как, нет подстроки?



if( $variable =~ /$string/ )
{
    print "В переменной есть требуемая строка";
}
else
{
    print "Подстроки нет";
}
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 15:20:45
Да без else.
Мне надо в сочетании с др. условиями.
И, кстати, так правильно
if (условие1 || условие2) ... #условие1 или условие2
if (условие1 && условие2) ... #условие1 и условие2
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: USE от 04 Октября 2002, 15:24:53
[off]
Цитировать
Мне надо в сочетании с др. условиями.

сформулируй нормально задачу,  а то тебе сегодня надо, завтра - нет.[/off]
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 15:25:47
print $ary[4];#{пусто}

а начинешь проверять
if ($ary[4] eq \'\') {print "1\\n\\n

";} else {print "0\\n\\n

";}#0

И, кстати, как правильно
$ary[4] или @ary[4]
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 15:28:25
Цитировать
сформулируй нормально задачу

Как определить нет ли в переменной определённой подстроки и др. переменная пуста?
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: USE от 04 Октября 2002, 15:30:31
Цитировать
if ($ary[4] eq \'\') {print "1\\n\\n

";} else {print "0\\n\\n

";}#0

должно выводить 1. скопируй эту строку и запусти на исполнение. сам увидишь чего получится.

$ary[4] - обращение к пятому элементу массива. если тебе это требовалось :)
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: mike от 04 Октября 2002, 15:32:10
Цитировать
Как определить нет ли в переменной определённой подстроки и др. переменная пуста?


А скомбинировать предыдущие ответы? :D
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 15:34:17
Да да. Сори. Сам впарился.
Все ок.
if (defined($ary[4])) {print "4 - определена\\n\\n

";} else {print "4 - не определена\\n\\n

";}
if ($ary[4] eq \'\') {print "4 - пуста\\n\\n

";} else {print "4 - не пуста\\n\\n

";}


###
4 - не определена

4 - пуста
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 15:37:13
Цитировать
А скомбинировать предыдущие ответы?

2-а Вопроса.
1) Синтаксис правильный:
if (условие1 || условие2) ... #условие1 или условие2
if (условие1 && условие2) ... #условие1 и условие2

2)Как определить нет ли в переменной определённой подстроки? (С вопросом как есть - я уже разобрался)
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: mike от 04 Октября 2002, 15:40:55
Цитировать
if (условие1 || условие2) ... #условие1 или условие2
if (условие1 && условие2) ... #условие1 и условие2


Адназначна :)

Цитировать
Как определить нет ли в переменной определённой подстроки? (С вопросом как есть - я уже разобрался)


if (index($str, $substr) >= 0)
{ print "есть!" } else { print "нет" }
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 15:44:33
Цитировать
if (index($str, $substr) >= 0)
{ print "есть!" } else { print "нет" }

А так?
if (index($str, $substr) < 0)
{ print "нет" } else { print "есть!" }
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: mike от 04 Октября 2002, 15:52:08
Цитировать
А так?
if (index($str, $substr) < 0)
{ print "нет" } else { print "есть!" }


И так можно :) :) :)
Название: Как сравнить 2 переменные на НЕ равенство?
Отправлено: Alexandr от 04 Октября 2002, 15:57:24
Всем пасиба! Всё получилось.
Сори за мои тупые вопросы.
Мне просто надо до конца недели переписать рейтинг с PHP на Perl+FastCGI
А с Перлом я впервые столкнулся вчера начиная от гемора с установкой самого Перл и модулей......
А щас ещё надо будет как-то FastCGI прикручивать ...ааааа
Мож кто с FastCGI работал? Чё дельное раскажет.

Голова пухнет :-)