Предположим есть массив с некоторыми условиями (строками), который имеет свойство меняться. Мне необходимо выполнять проверку на наличие таких слов в строке (в частности в начале). Типичный пример, тот же /etc/fstab или /etc/mtab Где присутствует список вида
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s2b none swap sw 0 0
Мне необходимо убирать строки из , ну например вывода а STDOUT.
тобишь, пусть имеем массив с такими строковыми переменными, строки из файла содержащих их нельзя выводить.
@arr = (\'\\n\',\'#\',\'/dev/hda1\',\'pupkin\',\'estche_chto_to\',\'Nu_i_tut_chego_to\');
Теперь делаю вывод из файла:
my @arr = (\'\\n\',\'#\',\'/dev/hda1\',\'pupkin\',\'estche_chto_to\',\'Nu_i_tut_chego_to\');
open (F, /path_to_file) || die "Can not open file!\\exit!\\n" ;
while (){
if (($_ !~ m/^$arr[0]/g) && ($_ !~ m/^$arr[1]/g) && ($_ !~ m/^$arr[2]/g) && ($_ !~ m/^$arr[3]/g) && ($_ !~ m/^$arr[4]/g) && ($_ !~ m/^$arr[5]/g)) {
print $_;
}
}
close (F);
Но как видно из кода мне смысла никакого от этого массива - так как пересиления условий приходиться делать руками, а у меня они время от времени меняются. Не хочется каждый раз править код, да и не только я буду им пользоваться, в конце концов. Можно ли как-то красиво заменить кучу if ((...)&&(...)) на что-то более гибкое ? Массив всн жн меняется (список читается банально из файла). Чувствую выход в регулярном выражении, но оно у меня не складывается... Ну ни как....