Size: a a a

2020 December 26

YM

Yuri Myasoedov in use Perl or die;
2 потока запустить? Но многопоточность в перле весьма своеобразная.
источник

DF

Denis F in use Perl or die;
Алексей Клименко
Как мне из синхронного perl-скрипта скушать весь stdin консоли, но не «ждать» дальше?

Я про случай, когда в консоль было введено что-то в то время, как скрипт делал другое, и не читал ещё.
Форкнуть читальник и от него просить данные когда надо
источник

DF

Denis F in use Perl or die;
Ну или ae::readline::gnu, или как-то около название
источник

АК

Алексей Клименко... in use Perl or die;
Гуглятся примеры с Term::ReadKey;
источник

YM

Yuri Myasoedov in use Perl or die;
С асинхронным дошло уже до чтения доков ноды
источник

АК

Алексей Клименко... in use Perl or die;
Алексей Клименко
Гуглятся примеры с Term::ReadKey;
Да на него прям все ссылаются!
источник

АК

Алексей Клименко... in use Perl or die;
Алексей Клименко
Да на него прям все ссылаются!
источник

YM

Yuri Myasoedov in use Perl or die;
Ну вот видишь как хорошо. Сам задал вопрос, сам нашел ответ.
источник

АК

Алексей Клименко... in use Perl or die;
Yuri Myasoedov
Ну вот видишь как хорошо. Сам задал вопрос, сам нашел ответ.
Получилось!

use Term::ReadKey;

sub fn_stdin_line #()
{
 ReadMode('normal');
 my $data = <>;
 chomp($data);
 return $data;
};

sub fn_stdin_all #()
{
 my $data = '';
 my $key;
 ReadMode('raw');
 while(1){
   $key = undef;
   $key = ReadKey(-2);
   if(defined($key)){
     $data .= $key;
   }else{
     last;
   }
 }
 ReadMode('normal');
 return $data;
};
источник

АК

Алексей Клименко... in use Perl or die;
Вроде работает именно так, как я хотел:

say 'Type a line:';
my $line = fn_stdin_line();
say 'Your line:';
say $line;
say 'Waiting 5 sec.';
sleep(5);
say 'Eating!';
my $all = fn_stdin_all();
say 'Type another line:';
$line = fn_stdin_line();
say 'Your last line:';
say $line;
say 'Eaten data:';
say $all;

Можно даже

sub fn_stdin_line #($noempty)
{
 my($noempty) = @_;
 ReadMode('normal');
 while(1){
   my $data = <>;
   chomp($data);
   if(($data ne '') || !$noempty){
     return $data;
   }
 }
};
источник

SZ

Sergey Zhmylove in use Perl or die;
Алексей Клименко
Вроде работает именно так, как я хотел:

say 'Type a line:';
my $line = fn_stdin_line();
say 'Your line:';
say $line;
say 'Waiting 5 sec.';
sleep(5);
say 'Eating!';
my $all = fn_stdin_all();
say 'Type another line:';
$line = fn_stdin_line();
say 'Your last line:';
say $line;
say 'Eaten data:';
say $all;

Можно даже

sub fn_stdin_line #($noempty)
{
 my($noempty) = @_;
 ReadMode('normal');
 while(1){
   my $data = <>;
   chomp($data);
   if(($data ne '') || !$noempty){
     return $data;
   }
 }
};
Што ето обоже
источник

SZ

Sergey Zhmylove in use Perl or die;
Алексей Клименко
Как мне из синхронного perl-скрипта скушать весь stdin консоли, но не «ждать» дальше?

Я про случай, когда в консоль было введено что-то в то время, как скрипт делал другое, и не читал ещё.
select епт
источник

АК

Алексей Клименко... in use Perl or die;
Sergey Zhmylove
select епт
источник

АК

Алексей Клименко... in use Perl or die;
Sergey Zhmylove
Што ето обоже
Съедает stdin, чтобы в запрошенный line не попало то, что было «случайно» введено в то время, пока код работал.
источник

АК

Алексей Клименко... in use Perl or die;
Правда он у меня почему-то часть $all (data) просирает где-то, но так как в реальном использовании я всё равно его выкину – мне пойдёт.
источник

AP

Anton Petrusevich in use Perl or die;
Алексей Клименко
Съедает stdin, чтобы в запрошенный line не попало то, что было «случайно» введено в то время, пока код работал.
... пока котэ работал
источник

VG

Vadim Goncharov in use Perl or die;
Алексей Клименко
Съедает stdin, чтобы в запрошенный line не попало то, что было «случайно» введено в то время, пока код работал.
но зачем?
источник

VG

Vadim Goncharov in use Perl or die;
Алексей Клименко
Как мне из синхронного perl-скрипта скушать весь stdin консоли, но не «ждать» дальше?

Я про случай, когда в консоль было введено что-то в то время, как скрипт делал другое, и не читал ещё.
под виндой прямых способов нет
источник

VG

Vadim Goncharov in use Perl or die;
Алексей Клименко
Although the Template Toolkit is written in Perl, you don't need to be a Perl programmer to use it.

Это в смысле, чтобы _редактировать_ темплейты не нужно знать перл?

Но чтобы «воспользоваться» самой системой – перл-то должен быть языком-хостом, да?

Грубо говоря, из-под NodeJS я её не вызову.
у вас на джээсе и так стопицот фреймворков для фронтенда, неужели мало?
источник

АК

Алексей Клименко... in use Perl or die;
Vadim Goncharov
но зачем?
Потому что вот ввёл ты «код из СМС», и прога зависла (ибо делает запрос, и так далее).
А ты такой, ИЩЛЯ НАХУЙ, и жмёшь enter несколько раз.

Но код, такой, «введите 2FA пароль» – а кто энтеры выкинет!?
источник