ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1241  
Старый 25.10.2009, 18:18
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

а что предполагается получить?
 
Ответить с цитированием

  #1242  
Старый 25.10.2009, 18:25
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

$ii
 
Ответить с цитированием

  #1243  
Старый 25.10.2009, 18:33
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Я в более глобальном смысле)
 
Ответить с цитированием

  #1244  
Старый 25.10.2009, 18:36
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

То значение, которое выводится на экран, мне надо не прости вывести на экран, но получит возможность работать с этой переменной дальше. Как еще объяснить - хз.
 
Ответить с цитированием

  #1245  
Старый 25.10.2009, 18:42
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

если переписать функцию gets1 так
Код:
sub gets1 {
  $| = 1;
  $ii = "";
  $i = 0;
  while ($n < 10) {
    { lock($n);
    $n++; }
    $ii .= $n;
    #print $ii . "\n";
    $i++;
  }
  print $i, "\n";
}
получим вывод
Код:
10
0
0
0
0
0
0
0
0
0
0
Цикл while отрабатывает лишь в первом потоке. Переменная $ii определена после цикла лишь при первом вызове подпрограммы. Это так и предполагается?)

Последний раз редактировалось krypt3r; 25.10.2009 в 18:45..
 
Ответить с цитированием

  #1246  
Старый 25.10.2009, 19:06
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

издеваешься? Еще раз:

Цитата:
вопрос, есть такой код:
Код:

#!/usr/bin/perl
use threads;
use threads::shared;
my $n : shared;

$a = gets();
print $a . "\n";

sub gets {
$thr = 10;
$n = 0;
for(0..$thr) {
$trl[$_] = threads->create(\&gets1);
}
for(0..$thr) {
$trl[$_]->join;
}
sub gets1 {
$| = 1;
$ii = "";
while ($n < 10) {
{ lock($n);
$n++; }
$ii .= $n;
print $ii . "\n";
}
return $ii;
}
}


как получить значение $ii ?
 
Ответить с цитированием

  #1247  
Старый 25.10.2009, 19:19
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Ну почему же издеваюсь. Если воткнуть print $ii не перед закрывающей фигурной сккобкой, а после (перед ретурном), все будет видно)

ЗЫ.
Код:
#!/usr/bin/perl
use threads;
use threads::shared;
my $n : shared;

$a = gets();
print $_, "\n" for @$a;
#print $a . "\n";

sub gets {
  $thr = 10;
  $n = 0;
  for(0..$thr) {
    $trl[$_] = threads->create(\&gets1);
  }
  for(0..$thr) {
    $res[$_] = $trl[$_]->join;
  }
  sub gets1 {
    $| = 1;
    $ii = "";
    while ($n < 10) {
      { lock($n);
      $n++; }
      $ii .= $n;
      #print $ii . "\n";
    }
    #print $ii, "\n";
    return $ii;
  }
  return \@res;
}
 
Ответить с цитированием

  #1248  
Старый 25.10.2009, 19:33
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

круть, спасибо, если заменить на

print $_, "\r" for @$a;

то как раз то, что надо

PS: Но остался последний момент, это опять вывод просто на экран, а если $ii мне нужно как число для дальнейших операций, то вариант не подходит

Т.е. вопрос в том, как мне выцепить после всех этих извращенств число "12345678910" и юзать его дальше

Последний раз редактировалось Pashkela; 25.10.2009 в 19:36..
 
Ответить с цитированием

  #1249  
Старый 25.10.2009, 20:12
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Ну вот, к примеру, надо добавить к коду каждого символа строки число 2 и вывести на экран новую строку
Код:
$a = gets();
@b = unpack 'C*', $a->[0];
$_ += 2 for @b;
print pack 'C*', @b;

Последний раз редактировалось krypt3r; 25.10.2009 в 20:23..
 
Ответить с цитированием

  #1250  
Старый 25.10.2009, 20:19
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

спасибо, твои советы мне очень помогли
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[php] Новичкам: задаем вопросы _Great_ PHP, PERL, MySQL, JavaScript 16396 17.06.2010 21:19
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ