Могу ли я вводить регулярные выражения во время выполнения - PullRequest
0 голосов
/ 27 октября 2019

Я хочу ввести регулярное выражение из файла или STDIN во время выполнения.

Я попробовал приведенный ниже код.

$mystr = "abcdefghijklmnopqrstuvwxyz";
while ($regexp = <STDIN>) {
    chomp $regexp;
    if ($mystr =~ $regexp) {
        print "pattern matched\n";
    } else {
        print "pattern did NOT match\n";
    }

Независимо от введенного мной регулярного выраженияне совпадает. Я ввожу m/abc/ например.

Ответы [ 2 ]

3 голосов
/ 27 октября 2019

/ требуется только для выражения выражения в виде литерала регулярного выражения. Значение самого регулярного выражения никогда не нужно заключать в / с. Таким образом, вы можете просто ввести abc или a.*z, чтобы найти совпадение.

0 голосов
/ 27 октября 2019
use strict;
use warnings;

my $mystr = "abcdefghijklmnopqrstuvwxyz";
while (my $regexp = <STDIN>) {
    chomp $regexp;
    if ($mystr =~ qr/$regexp/) {
        print "pattern matched\n";
    } else {
        print "pattern did NOT match\n";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...