Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl:哈希和正则表达式中的键存在问题_Regex_String_Perl_File_Hash - Fatal编程技术网

Regex Perl:哈希和正则表达式中的键存在问题

Regex Perl:哈希和正则表达式中的键存在问题,regex,string,perl,file,hash,Regex,String,Perl,File,Hash,很抱歉发布另一个与我之前发布的问题类似的问题。我意识到我的问题不是很清楚,这可能会导致一些误解的答案。所以我想重新措辞,再问一次 我的任务是读入2个文件(基本配置文件和配置文件)。这两个文件可以有任意数量的行。行的顺序不必按顺序排列。我需要忽略“!”和“^”之后的内容。然而,我被困在忽略“!”和“^”的部分。我能够将每一行存储到散列中的键中(没有“!”或“^”之后的内容),但在比较时失败 例如,如果文件中有一行“hello!123”,我只需要在散列中存储“hello”,并将字符串“hello”与

很抱歉发布另一个与我之前发布的问题类似的问题。我意识到我的问题不是很清楚,这可能会导致一些误解的答案。所以我想重新措辞,再问一次

我的任务是读入2个文件(基本配置文件和配置文件)。这两个文件可以有任意数量的行。行的顺序不必按顺序排列。我需要忽略“!”和“^”之后的内容。然而,我被困在忽略“!”和“^”的部分。我能够将每一行存储到散列中的键中(没有“!”或“^”之后的内容),但在比较时失败

例如,如果文件中有一行“hello!123”,我只需要在散列中存储“hello”,并将字符串“hello”与另一个散列中的另一个键进行比较。如果在另一个散列中有一个“hello”键,我需要将其打印出来或放入另一个散列中。我的程序只能从“hello!123”行中输入“hello”,但当它与另一个散列中的另一个键进行比较时,该部分失败

我通过编写另一个简短的程序来检查正则表达式,该程序只接收用户输入,删除“!”和“^”符号后的内容,并与另一个散列的另一个键进行比较

这是我的错误代码:

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);
my%common=();
我的%不同=();
#打开配置文件并将其加载到配置哈希中
打开配置文件,“