Фильтрация ввода с клавиатуры

Абсолютно. Предположение, то есть, что у Вас есть разрешение изменить Ваш собственный пароль во-первых.

Вы испытываете трудность при попытке внести изменение?

4
04.11.2012, 07:51
1 ответ

Я записал это давным-давно. Это - сценарий, который находится между входом пользователя и интерактивной программой, и позволяет входу быть прерванным. Я использовал его для выхода к оболочке для проверки имен файлов при запущении старых программ Фортрана, в которых было задано много вопросов. Вы могли легко изменить его, чтобы прервать конкретные исходные данные и санировать их.

#!/usr/bin/perl

# shwrap.pl - Wrap any process for convenient escape to the shell.

use strict;
use warnings;

# Provide the executable to wrap as an argument
my $executable = shift;

my @escape_chars = ('#');             # Escape to shell with these chars
my $exit = 'bye';                     # Exit string for quick termination

open my $exe_fh, "|$executable @ARGV" or die "Cannot pipe to program $executable: $!";

# Set magic buffer autoflush on...
select((select($exe_fh), $| = 1)[0]);

# Accept input until the child process terminates or is terminated...
while ( 1 ) {
   chomp(my $input = <STDIN>);

   # End if we receive the special exit string...
   if ( $input =~ m/$exit/ ) {
      close $exe_fh;
      print "$0: Terminated child process...\n";
      exit;
   }

   foreach my $char ( @escape_chars ) {
      # Escape to the shell if the input starts with an escape character...
      if ( my ($command) = $input =~ m/^$char(.*)/ ) {
         system $command;
      }
      # Otherwise pass the input on to the executable...
      else {
         print $exe_fh "$input\n";
      }
   }
}

Простая тестовая программа в качестве примера можно испытать его на:

#!/usr/bin/perl

while (<>) {
   print "Got: $_";
}
1
27.01.2020, 21:02
  • 1
    . Это очень полезно. Я думаю, что должен буду сделать некоторые модификации для не использования, чавкают, который делает линию за линией, правильно? Моя программа отвечает на отдельные ключевые события, не разделенные новой строкой. Но, мне нравится общее представление, и я могу сделать эту работу.Спасибо! –  stevejb 05.11.2012, 01:36

Теги

Похожие вопросы