Извините, что опубликовал еще один вопрос, который похож на вопрос, который я опубликовал ранее.Я понял, что мой вопрос не очень ясен, и это могло привести к некоторому недоразумению в ответах.Поэтому я подумал перефразировать его и спросить снова.
Моя задача - прочитать 2 файла (базовый файл конфигурации и файл конфигурации).Оба файла могут иметь любое количество строк.Порядок строк не обязательно должен быть в последовательности.Мне нужно игнорировать вещи после "!"и "^".Тем не менее, я застрял на части игнорирования "!"и "^".Я могу сохранить каждую строку в ключах в хэше (без элементов после "!" Или "^"), но при сравнении я не получаю.
Например, если у меня есть строка "привет!"123 "в файле, мне нужно сохранить только" привет "в хэше и сравнить строку" привет "с другим ключом из другого хэша.Если в другом хеше есть ключ «привет», мне нужно распечатать его или поместить в другой хеш.Моя программа может поставить «hello» только из строки «hello! 123», но потерпела неудачу в части, когда она сравнивается с другим ключом в другом хэше.
Я проверил свое регулярное выражение, написав еще одну короткую программу, которая просто принимает пользовательский ввод и удаляет вещи после "!"и символы «^» и сравнить с другим ключом другого хэша.
Вот мой ошибочный код:
my %common=();
my %different=();
#open config file and load them into the config hash
open CONFIG_FILE, "< script/".$CONFIG_FILENAME or die;
my %config;
while (<CONFIG_FILE>) {
chomp $_;
$_ =~ s/(!.+)|(!.*)|(\^.+)|(\^.*)//;
$config{$_}=$_;
print "_: $_\n";
#check if all the strings in BASE_CONFIG_FILE can be found in CONFIG_FILE
$common{$_}=$_ if exists $base_config{$_};#stored the correct matches in %common
$different{$_}=$_ unless exists $base_config{$_};#stored the different lines in %different
}
close(CONFIG_FILE);
У кого-нибудь была такая же проблема, как у меня раньше?Что вы делаете, чтобы решить это?