我有一个看起来像这样的列表:
__DATA__
49103393193[0-9]{1,3};+49103/393193-0;Company 1;Street;Number;Postal Code;City
现在我将一个包含这些值的大列表加载到一个看起来像这样的哈希中:
%voicePrefix = (
'49103393193[0-9]{1,3}' => [
'+49103/393193-0',
'Company 1',
'Street'
'Number'
'Postal Code'
'City'
],
);
我这样做:
my %voicePrefix = map {
chomp;
my @fields = split ';';
shift @fields => \@fields;
} __DATA__;
my $voiceRegex = '(' . join('|',map{quotemeta} keys %voicePrefix) . ')';
现在的问题是我有另一个包含很多数字的列表,所以假设我将一个文件加载到@lines,它看起来像这样:
__@lines__
4910339319344;Test 1
49103393193411;Test 2
49103393193941;Test 3
现在我想做的是对我这样做的数字使用正则表达式,但它确实不起作用它永远找不到匹配项
my @lines = __FILEUPTHERE__;
my @line;
my $company;
for(my $i = 0; i < @lines; $i++)
{
#Split Line
@line = split( /,/, $lines[$i] );
#NO MATCH HERE
$company = $voicePrefix{$1}[1] if ($line[0] =~ /$voiceRegex/);
}
我希望有人可以帮助我解决这个问题。
谢谢 :)