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


Автор: Astraller 20.6.2009, 15:33
Суть в том что не работает сравнение строк, или я не пойму что не так...
Код

#!/usr/bin/perl -w

use Net::OSCAR;
use strict;

my($UIN, $PASSWORD, $err, $oscar, $text);

sub send_answer();

$UIN = "587003760";
$PASSWORD = "wisible";
$text = "test";

$oscar = Net::OSCAR -> new();
$oscar -> set_callback_im_in(\&send_answer);

$oscar -> signon($UIN, $PASSWORD) or die("Login error");

while (1) {
  $oscar->do_one_loop();
  sleep(1);
}
sub send_answer() {
  my($oscar, $sender, $msg);

  ($oscar, $sender, $msg) = @_;
  chomp($msg);

  if ($msg eq 'quit') {
    $oscar -> send_im($sender, "Shutting down...");
    $oscar -> signoff();
    exit();
  }

  print("<== $sender\n$msg\n==> $text\n");
  $oscar -> send_im($sender, $text);
}

Проблема у меня вот в этой строчке:
Код

  if ($msg eq 'quit') {

Она не срабатывает ни при каких условиях. Почему - понять не могу.

Автор: mario315 20.6.2009, 19:46
Код

if ($msg =~ 'quit') {


Так, вроде, работает.

Автор: shamber 20.6.2009, 23:41
don'tquit тоже сработает smile

Автор: Astraller 21.6.2009, 22:01
Цитата(mario315 @  20.6.2009,  19:46 Найти цитируемый пост)
Так, вроде, работает. 

Не работает  smile 

странно, все как-то, очень странно.

Автор: shamber 21.6.2009, 22:40
А может ну ее эту асю? может Jabber поможет?

Автор: mvsgt 22.6.2009, 10:15
Попробуйте вывести значение $msg - может там большие буквы.

Автор: Astraller 22.6.2009, 11:16
Цитата(shamber @  21.6.2009,  22:40 Найти цитируемый пост)
А может ну ее эту асю? может Jabber поможет? 

Это для агрегатора... до жабы еще дойду smile

Цитата(mvsgt @  22.6.2009,  10:15 Найти цитируемый пост)
Попробуйте вывести значение $msg - может там большие буквы. 

Оно выводится вот результат (до и после $msg специально добавил "_"):
Код

<== 213979536
_test_
==> test
<== 213979536
_quit_
==> test

Автор: shamber 22.6.2009, 12:03
кодировка?

Автор: Astraller 22.6.2009, 13:34
Цитата(shamber @  22.6.2009,  12:03 Найти цитируемый пост)
кодировка? 

А есть разница если сравниваются латинские символы?

Хотя я пробовал в cp1251 и в utf8. Не помогло. smile 

Автор: mvsgt 22.6.2009, 14:44
Может там флаг какой, типа utf8 стоит у одной из сравниваемых строк? Попробуйте у обеих его снять или поставить.

utf8::upgrade($msg);
$msg_utf8 = Encode::decode_utf8($msg);

типа этого.

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