Мое требование - передать строку с + (например: ABC + DEF). И он должен соответствовать любому значению для actual_state, значения могут быть ABC+DEF ABC+DEF, ABC+DEF,,
и т. Д. Там может быть одна или несколько запятых после ABC + DEF. Но это не должно совпадать с ABC+DEF, PQR-SL
.Невозможно понять! ~ В regex
Ниже приведен фрагмент кода, что я пробовал:
sub verify_state{
my $expected_state = shift;
my $vol = 'vol';
my $actual_state = 'ABC+DEF,';
print "Verify backend state for $vol\n";
print "Expected backend state for $vol = $expected_state\n";
print "Actual backend state for $vol = $actual_state\n";
if ($expected_state !~ /$actual_state,*$/) {
print
"Expected state was $expected_state but got $actual_state for $vol\n"
;
return 0;
}
return 1;
}
my $val = verify_state('ABC+DEF');
print $val,"\n";
он должен вернуть меня 1, если я буду проходить ABC+DEF
. 0, если я буду проходить ABC+DEF, PQR-SL
почему я написал my $actual_state = 'ABC+DEF,';
Поскольку значения ABC+DEF ABC+DEF, ABC+DEF,,
приходят как часть значения хэш-функции для определенного ключа, например. my $actual_state = $status->{state};
.
Ваше описание не очень ясное. Можете ли вы отредактировать вопрос и просто составить список ожидаемых результатов для каждой из строк, которые вы ввели? Похоже, что ваш шаблон неправильный, но я не понимаю, что вы пытаетесь сделать. – simbabque
'! ~' Означает * не соответствует * (это просто логическая противоположность '= ~') – rustyx
@simbabque, в моем случае actual_state может быть любой вещью из 'ABC + DEF ABC + DEF, ABC + DEF ,, 'поскольку я не контролирую его. но то, что я прохожу, является постоянным здесь, т.е.' ABC + DEF'. Я пытаюсь сопоставить отрицательно ABC + DEF с тем, что когда-либо будет с actual_state. я имею в виду ABC + DEF! ~ ABC + DEF или ABC + DEF! ~ ABC + DEF, или ABC + DEF! ~ ABC + DEF ,,. Для всех случаев он должен быть ложным и возвращаться 1 – Satya