Я хочу иметь возможность взять аргумент из командной строки и использовать его как регулярное выражение в моем скрипте для фильтрации строк из моего файла. Простой пример
$ perl script.pl id_4
В script.pl:
...
my $exp = shift;
while(my $line = <$fh){
if($line =~ /$exp/){
print $line,"\n";
}
}
...
Мой настоящий скрипт немного сложнее и выполняет другие манипуляции со строкой для извлечения информации и получения другого результата. Моя проблема в том, что у меня есть ситуации, когда я хочу отфильтровать каждую строку, содержащую "id_4", а не только строки, содержащие "id_4". Обычно это может быть достигнуто
if($line !~ /$exp/)
но, если возможно, я не хочу изменять свой сценарий для принятия более сложного набора аргументов (например, используйте !~
, если вторым параметром является "ne", и =~
, если нет).
Кто-нибудь может подумать о регулярном выражении, которое я могу использовать (помимо длинного "id_1 | id_2 | id_3 | id_5 ..."), чтобы отфильтровать строки, содержащие одно конкретное значение из множества возможностей? Я боюсь, что я прошу о глупости здесь, и, вероятно, следует просто придерживаться разумного и принять дальнейший аргумент: /.